bootstrap fileinput+MVC 上传多文件,保存

新增用户资料,需要用户上传多笔附件,所以就尝试用了fileinput控件,显示效果如图:

首先,先在model中定义数据模型:

public partial class create
{
       [Required]
       [Display(Name = "附件")]
       public HttpPostedFileBase[] attach { get; set; }
} 

视图中定义控件:

<div class="form-group">
                @Html.LabelFor(m => m.attach, new { @class = "col-sm-3 control-label" })
                <div class="col-sm-7">
                    @Html.TextBoxFor(model => model.attach, new { type = "file", multiple = "multiple", accept = "application/msword,application/pdf,application/vnd.openxmlformats-officedocument.wordprocessingml.document" })
                    @Html.ValidationMessageFor(m => m.attach, "", new { @class = "text-danger" })
                </div>
            </div>

该控件的类型是multiple,可以选择多个文件;accept属性是可选择的文件类型,这里我们要去只能选择doc docx pdf ,需支持其他类型的可自行百度;ValidationMessageFor是必填

js中调用该控件:

 1 var url = rootUrl + "attachment/upload";
 2 $("#attach").fileinput({
 3     theme: "explorer", //主题  
 4     language: 'zh',
 5     uploadUrl: url,// 上传请求路径  
 6     allowedFileExtensions : ["pdf", "doc","docx"],//允许上传的文件后缀           
 7     showUpload: false,//是否显示上传按钮  
 8     showCaption: false,//是否显示容器  
 9     dropZoneEnabled: false,//是否显示拖拽区域   
10     removeFromPreviewOnError: true,//是否移除校验文件失败的文件  
11     layoutTemplates: {     
12         actionUpload: '',   //取消上传按钮 
13         actionZoom: ''      //取消放大镜按钮 
14     },
15     showPreview: true,      //显示预览     
16     minFileCount: 1,   //最低文件数量  
17     //maxFileCount: 3,   //最多文件数量  
18     maxFileSize: 1024*2,  //允许文件上传大小  
19     overwriteInitial: false,
20     previewFileIcon: '<i class="fa fa-file"></i>',
21     initialPreviewAsData: true, // defaults markup    
22     preferIconicPreview: true, // 是否优先显示图标  false 即优先显示图片  
23     previewFileIconSettings: { // configure your icon file extensions  
24         'doc': '<i class="fa fa-file-word-o text-primary"></i>',
25         'docx': '<i class="fa fa-file-word-o text-primary"></i>',
26         'xls': '<i class="fa fa-file-excel-o text-success"></i>',
27         'xlsx': '<i class="fa fa-file-excel-o text-success"></i>',
28         'ppt': '<i class="fa fa-file-powerpoint-o text-danger"></i>',
29         'pdf': '<i class="fa fa-file-pdf-o text-danger"></i>',
30         'zip': '<i class="fa fa-file-archive-o text-muted"></i>',
31         'htm': '<i class="fa fa-file-code-o text-info"></i>',
32         'txt': '<i class="fa fa-file-text-o text-info"></i>',
33         'mov': '<i class="fa fa-file-movie-o text-warning"></i>',
34         'mp3': '<i class="fa fa-file-audio-o text-warning"></i>',
35         'jpg': '<i class="fa fa-file-photo-o text-danger"></i>',
36         'gif': '<i class="fa fa-file-photo-o text-muted"></i>',
37         'png': '<i class="fa fa-file-photo-o text-primary"></i>'
38     }
39 });

上传的url就是点击Upload按钮调用的方法,我们没有使用这个url,我们是在提交之后再上传的,所以可以忽略上传

页面提交保存后台:

 1         [HttpPost]
 2         [ValidateInput(false)]
 3         [ValidateAntiForgeryToken]
 4         [UIExceptionResult]
 5         public ActionResult attachment_create(create model)
 6         {
 7             if (ModelState.IsValid)
 8             {
 9                
10                     string uploadPath = Server.MapPath(string.Format("~\\upload\\{0}\\", DateTime.Now.ToString("yyyyMMdd")));
11                     string savePath = string.Format("/upload/{0}/", DateTime.Now.ToString("yyyyMMdd"));
12                     if (Directory.Exists(uploadPath) == false)
13                     {
14                         Directory.CreateDirectory(uploadPath);
15                     }
16                     if (model.attch != null && model.attch.Count() > 0)
17                     {
18                         for (int i = 0; i < model.attch.Count(); i++)
19                         {
20                             var _file = model.attch[i];
21                             string _imageName = DateTime.Now.Ticks.ToString() + System.IO.Path.GetExtension(_file.FileName);
22                             var path = uploadPath + _imageName;
23                             //保存
24                             _file.SaveAs(path);
25                         }
26 
27                     }
28             return View(model);
29         }

 

转载于:https://www.cnblogs.com/Sakura007/p/7976727.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值