C# mvc 上传多个附件

1  <div class="col-xs-12 mcp-list-item" style="margin-top:20px">
2                                     <div class="mcp-list-item-title">附件</div>
3                                     <input onchange="upload()" id="uploadFile" name="uploadFile" placeholder="多个请按下Ctrl后选取文件" type="file" value="文件选取" multiple="multiple">
4                                 </div>
5                                 <div class="col-xs-12 mcp-list-item">
6                                     <a class="btn btn-success" onclick="btn_upload()"><i class="fa fa-upload"></i>开始上传</a>
7                                 </div>



//下面这一段代码是用来显示图片容器的

 

  <div id="imgList">
          <img id="fileUrl" style="width: 100px; height: 100px; border-radius: 100px;" />
      </div>
      
      <div id="fileList">

      </div>

 

 
        //图片上传
        function upload() {

            var f1 = document.getElementById('uploadFile').files;
            if (f1.length>0) {
                var form = $('#imgList');
                for (var i = 0; i < f1.length; i++) {

                    var src1 = window.URL.createObjectURL(f1[i]);
                    var imgid='fileUrl_'+i;
                    var oldElement = $('#fileUrl');
                    var newElement = $(oldElement).clone();
                    $(oldElement).attr('id', imgid);
                    $(oldElement).before(newElement);
                    $(oldElement).appendTo(form);
                    $(oldElement).attr('src', src1);
                   // $('#' + imgid).src = src1
                }
            }
            
           



            //var f = document.getElementById('uploadFile').files[0];
         
            //var src = window.URL.createObjectURL(f);
            //var filetype = "GIF,JPEG,JPG,PNG,pdf";
            //document.getElementById('fileUrl').src = src;

            

            //if (f == null || f == "") {
            //    dialogMsg('请选择文件!', 0);
            //    return;
            //} else if (f != "" && f != undefined && f != null) {
            //    var imgtype = ff.toLowerCase().split('.');
            //    if (filetype.indexOf(imgtype[1].toUpperCase()) == -1) {
            //        dialogMsg('图片类型必须是.gif,jpeg,jpg,png,pdf中的一种!', 0);
            //        return;
            //    }
            //}
        

        }
        function btn_upload() {
    
            var refids = [];
            var rows = $('#Delivery_Grid').datagrid('getRows');
            $.each(rows, function (index, item) {
                refids.push(item.reforderid);
               
            });

            var numArr = [];
            var txt = $("#fileList").find("input:file"); //获取所有上传附件框
            for (var i = 0; i < txt.length; i++) {
                numArr.push(txt.eq(i).attr('id'));       //将附件框的ID添加到数组中
            }


            if (!$('#formState').Validform()) {
                return false;
            }
            var postData = $("#formState").GetWebControls();

            $.ajaxFileUpload({
                url: "/TMS.Service/ServiceMilestone/UploadFile?reforderid=" + refids.join(','),
                secureuri: false,
                fileElementId: 'uploadFile',
                dataType: 'json',
                //data: postData,
                success: function (data) {
                    if (data.status) {
                        dialogMsg(data.message, 1);
                  
                        document.getElementById('fileUrl').src = "";
                        document.getElementById('uploadFile').src = "";

                    } else {
                        dialogMsg(data.msg, 0);
                    }
                }
            });

        }

记得引入   <script src="~/Content/scripts/uploadify/ajaxfileupload.js"></script>

 

后台代码:

 

 

  [HttpPost]
        public ActionResult UploadFile(MilestoneInfo minfo)
        {

            try
            {

                var filelist = new List<Cargo.Entity.FileInfoEntity>();
                if (minfo == null)
                {
                    throw new Exception("找不到milestone节点所属的业务信息 ");
                }

                if (Request != null && Request.Files != null && Request.Files.Count > 0)
                {
                    string FileServerUrl = ConfigurationManager.AppSettings["FileServerUrl"].ToString();
                    string serverBasePath = AppDomain.CurrentDomain.BaseDirectory + @"Upload\temp\";
                    DirectoryInfo dir = new DirectoryInfo(serverBasePath);
                    if (!dir.Exists)
                    {
                        dir.Create();
                    }
                    foreach (string fileStr in Request.Files)
                    {
                        HttpPostedFileBase file = Request.Files[fileStr] as HttpPostedFileBase;
                        if (file != null && file.ContentLength > 0)
                        {
                            string filename = Path.GetFileName(file.FileName);
                            string savePath = serverBasePath + @"\" + filename;
                            var fileExtName = Path.GetExtension(savePath);
                            file.SaveAs(savePath);
                            string uploadDate = DateTime.Now.ToString("yyyyMMdd");
                            string address = FileServerUrl + $"Home/UploadFile?module={TMS_Enum.TMS_SysFileInfoEnum.TMS_module.ToString()}&folderId={TMS_Enum.TMS_SysFileInfoEnum.TMS_folderId.ToString()}&uploadDate=" + uploadDate;
                            var buffer = new WebClient().UploadFile(address, "post", savePath);
                            string result = Encoding.UTF8.GetString(buffer);

                            var serverFilePath = FileServerUrl + result.Replace("~/", ""); //最终服务器存储的地址
                                                                                           //判断文件是不是存在 清空临时存储的文件
                            if (System.IO.File.Exists(savePath))
                            {
                                //如果存在则删除
                                System.IO.File.Delete(savePath);
                            }
                            filelist.Add(new Cargo.Entity.FileInfoEntity
                            {
                                FileExtensions = fileExtName,
                                FilePath = serverFilePath,
                                FileName = filename,

                            });
                        }
                    }
 
                }


                //这里为了避免上传文件事务长时间锁死,所以放置到这里进行操作,先上传耗时的文件操作,再考虑操作数据库
                SaveMilestone(
                    minfo,
                    filelist);
                return new ResponseModel { status = true, msg = "提交成功!" };

            }
            catch (Exception ex)
            {

                return new ResponseModel { status = false, msg = ex.Message };
            }

        }

 

 

 

 


 

 

posted @ 2019-02-20 16:34  笨笨鱼~  阅读(2224)  评论(0编辑  收藏  举报