html file 文件批量上传 以及碰到的一些问题提
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | //javascript 代码 <br> $("#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; } } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本