html file 文件批量上传 以及碰到的一些问题提

//javascript 代码   
$("#submite").click(function (evt) { var arrayTr = $("#datatables").find("tbody").find("tr"); $(arrayTr).each(function (index, value) { var data = new FormData(); $(value).find("input[type='file']").each(function (i, file) { if (file.files[0] != undefined) { data.append(file.files[0].name + i, file.files[0]); } }); data.append("modelKey", JSON.stringify(datas.data[index])) //apis.certificate.httpRequestPost(apis.certificate.UploadCertificate, data, function () { alert("success") }); $.ajax({ url: apis.certificate.UploadCertificate, type: "POST", data: data, contentType: false, processData: false, success: function (result) { alert(result); }, error: function (err) { alert(err.statusText) } }); }); });

  提示无法打开关闭的文件流时候 配置 

<compilation debug="true" targetFramework="4.5" />
<httpRuntime maxRequestLength="1048576" targetFramework="4.5" requestLengthDiskThreshold="1048576" useFullyQualifiedRedirectUrl="true" executionTimeout="3600" />
</system.web>

后台代码   string json =HttpContext.Current.Request.Form["modelKey"];

            modeldo m = Newtonsoft.Json.JsonConvert.DeserializeObject<modeldo>(json);
            HttpFileCollection _file = System.Web.HttpContext.Current.Request.Files;
            Tuple<modeldo, HttpFileCollection> model = new Tuple<modeldo, HttpFileCollection>(m, _file);
            ThreadPool.QueueUserWorkItem(threadDo, model); //这里用异步多线程可能会存在问题 导致后续文件无法完全上传   可以直接调用
           

} public void threadDo(object o) { HttpFileCollection _file = (HttpFileCollection)(((Tuple
<modeldo, HttpFileCollection>)o).Item2); modeldo m = (modeldo)((Tuple<modeldo, HttpFileCollection>)o).Item1; for (int i = 0; i < _file.Count; i++) { int CatagoryId = Convert.ToInt32(_file.AllKeys[i].Substring(_file.AllKeys[i].Length - 1)); switch (CatagoryId) { case 0: m.CurrentCertificatePutAddress = UploadFile(_file[i]); m.CurrentCertificatePutAddressName = _file[i].FileName; break; case 1: m.CurrentCostSettleRule = UploadFile(_file[i]); m.CurrentCostSettleRuleName = _file[i].FileName; break; case 2: m.CurrentCostSettleCertificate = UploadFile(_file[i]); m.CurrentCostSettleCertificateName = _file[i].FileName; break; case 3: m.CurrentContract = UploadFile(_file[i]); m.CurrentContractName = _file[i].FileName; break; } } ConsumptionCertificatedetail certificateModel = new ConsumptionCertificatedetail(); certificateModel.CertificateNumber = m.CertificateNumber;//2017-06-01 - 2017-06-30 certificateModel.CurrentCertificateStart = m.CurrentCertificateSection.Split('~')[0]; certificateModel.CurrentCertificateEnd = m.CurrentCertificateSection.Split('~')[1]; certificateModel.CurrentContract = m.CurrentContract; certificateModel.CurrentContractName = m.CurrentContractName; certificateModel.CurrentCertificatePutTxt = m.CurrentCertificatePutTxt; certificateModel.CurrentCertificatePutAddressName = m.CurrentCertificatePutAddressName; certificateModel.CurrentCertificatePutAddress = m.CurrentCertificatePutAddress; certificateModel.CurrentCostSettleCertificate = m.CurrentCostSettleCertificate; certificateModel.CurrentCostSettleCertificateName = m.CurrentCostSettleCertificateName; certificateModel.CurrentCostSettleCertificateTxt = m.CurrentCostSettleCertificateTxt; certificateModel.CurrentCostSettleRule = m.CurrentCostSettleRule; certificateModel.CurrentCostSettleRuleName = m.CurrentCostSettleRuleName; certificateModel.CurrentCostSettleRuleTxt = m.CurrentCostSettleRuleTxt; certificateModel.CurrentPutUrl = m.CurrentPutUrl; bus.AddcertificateDetail(certificateModel); //long size = _file[0].ContentLength; ////文件类型 //string type = _file[0].ContentType; ////文件名 //string name = _file[0].FileName; ////文件格式 //string _tp = System.IO.Path.GetExtension(name); } public string UploadFile(HttpPostedFile Files) { int FileLenth = Files.ContentLength; byte[] buffur = new byte[FileLenth]; using (BinaryReader br = new BinaryReader(Files.InputStream, Encoding.UTF8)) { buffur = br.ReadBytes(FileLenth); br.Close(); br.Dispose(); } DFSClient client = new DFSClient(); string url= client.UploadFile(buffur, System.IO.Path.GetExtension(Files.FileName).Substring(1, System.IO.Path.GetExtension(Files.FileName).Length-1)); return url; } } public class modeldo : ConsumptionCertificatedetail { public string CurrentCertificateSection { get; set; } } }
原文地址:https://www.cnblogs.com/zengpeng/p/7943392.html