侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

MVC文件上传支持批量上传拖拽及预览文件内容校验功能

php  /  管理员 发布于 8年前   188

网站中的上传相信大家都不陌生,也算是一个小小的技术难点,尤其时在asp.net中,上传的一些大小限制以及上传的进度的控制,以及用户体验等方面,今天在这里分享一个在asp.net mvc模式下的文件上传,同样适用于其它web类型bootstrap-fileinput .

它来自一个开源项目 git:https://github.com/kartik-v/bootstrap-fileinput/

文档地址:http://plugins.krajee.com/file-input

用一个下午的时间将文档通读了一次,并且做了根据文档指示做出了一个小型的demo,效果出奇的好,如下是效果图:

可以对文件预览筛选,从客户端就过滤一些不适用的文件,而且界面效果还特别美观

如下是使用方式:或者直接参照代码写就可以

使用方式:

1.nuget:Install-Package bootstrap-fileinput

2.语言本地化{下载fileinput_locale_zh.js}或者修改Fileinput中的本地化词汇

下载地址:https://github.com/kartik-v/bootstrap-fileinput/tree/master/js/locales  【中文是zh.js】

文档结构:

3.文件大小限制:修改fileinput.js中的3195行 maxFilePreviewSize配置节点

maxFilePreviewSize: 25600, // 25 MB  默认是25M,根据需要手动调整

示例:前台  --代码中的注释已经足够解释各配置项的作用,就不赘述了.

@{  Layout = null;}<!DOCTYPE html><html><head>  <meta name="viewport" content="width=device-width" />  <title>Index</title>  <script src="https:/article/~/Scripts/jquery-1.9.1.js"></script>  <script src="https:/article/~/Scripts/bootstrap.js"></script>  <link href="https:/article/~/Content/bootstrap.css" rel="external nofollow" rel="stylesheet" />  <script src="https:/article/~/Scripts/fileinput.js"></script>  <script src="https:/article/~/Scripts/fileinput_locale_zh.js"></script>  <link href="https:/article/~/Content/bootstrap-fileinput/css/fileinput.css" rel="external nofollow" rel="stylesheet" />  <script type="text/javascript">    $(function () {      var control = $("#txt_file");      var uploadrul = "/Home/UploadFile";      control.fileinput({        language: 'zh', //设置语言        uploadUrl: uploadrul, //上传的地址        allowedFileExtensions: ['xml','docx'],//接收的文件后缀        showUpload: true, //显示批量上传按钮        showCaption: false,//是否显示标题        browseClass: "btn btn-primary", //按钮样式           dropZoneEnabled: true,//是否显示拖拽区域        //minImageWidth: 50, //图片的最小宽度        //minImageHeight: 50,//图片的最小高度        //maxImageWidth: 1000,//图片的最大宽度        //maxImageHeight: 1000,//图片的最大高度        //maxFileSize: 0,//单位为kb,如果为0表示不限制文件大小        //minFileCount: 0,        maxFileCount: 100,        enctype: 'multipart/form-data',        validateInitialCount: true,        previewFileIcon: "<i class='glyphicon glyphicon-king'></i>",        msgFilesTooMany: "选择上传的文件数量({n}) 超过允许的最大数值{m}!",      });      //导入文件上传完成之后的事件      $("#txt_file").on("fileuploaded", function (event, data, previewId, index) {      });    });  </script></head><body>  <div>     <form>      <div>        <div class="modal-header">          <h4 class="modal-title" id="myModalLabel">[请选择xml/docx]文件</h4>        </div>        <div class="modal-body">          <input type="file" name="txt_file" id="txt_file" multiple class="file-loading" />        </div>      </div>    </form>  </div></body></html>

后台:

using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.Mvc;using System.IO;using System.Xml;using System.Xml.Schema;namespace UploadTest.Controllers{  public class HomeController : Controller  {    //    // GET: /Home/    public ActionResult Index()    {      return View();    }    public JsonResult UploadFile()    {      uploadResult result = new uploadResult();      var oFile = Request.Files["txt_file"];      result.fileName = oFile.FileName;      Stream sm = oFile.InputStream;      byte[] bt= new byte[sm.Length];      sm.Read(bt, 0, (int)sm.Length);      FileStream fs = new FileStream(AppDomain.CurrentDomain.BaseDirectory+oFile.FileName,FileMode.Create);      fs.Write(bt, 0, bt.Length);      fs.Close();      fs.Dispose();      sm.Close();      sm.Dispose();      return Json(result, JsonRequestBehavior.AllowGet);    }    public class uploadResult    {      public string fileName { get; set; }      public string error { get; set; }    }  }}

为了在前台正确的显示文件的错误信息,需要给前台返回一个带有error字段的json,其中error字段时必须的,否则无法显示后台回写的错误消息【这时必须的,官方文档中明确指出】

后台可以做到更细致的控制,并且支持多线程上传


  • 上一条:
    一步步打造简单的MVC电商网站BooksStore(1)
    下一条:
    Mvc动态注册HttpModule详解
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • PHP 8.4 Alpha 1现已发布!(0个评论)
    • 用Time Warden监控PHP中的代码处理时间(0个评论)
    • 在PHP中使用array_pop + yield实现读取超大型目录功能示例(0个评论)
    • Property Hooks RFC在PHP 8.4中越来越接近现实(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-10
    • 2016-11
    • 2017-06
    • 2017-07
    • 2017-08
    • 2017-09
    • 2017-11
    • 2017-12
    • 2018-01
    • 2018-02
    • 2018-03
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2020-07
    • 2020-09
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-05
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-02
    • 2022-05
    • 2022-06
    • 2022-07
    • 2022-08
    • 2022-09
    • 2022-10
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-04
    • 2023-05
    • 2023-06
    • 2023-07
    • 2023-08
    • 2023-09
    • 2023-10
    • 2023-11
    • 2023-12
    • 2024-01
    • 2024-02
    • 2024-03
    • 2024-04
    • 2024-05
    • 2024-06
    • 2024-07
    • 2024-09
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客