html file 文件批量上传 以及碰到的一些问题提
2017-12-01 17:06
351 查看
//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; } } }
相关文章推荐
- 上传文件中使用ajaxfileupload.js碰到的问题
- 上传文件中使用ajaxfileupload.js碰到的问题
- PHP学习之路之PHP文件上传需要考虑的问题以及解决方法($_FILES,$_SERVER,substr,strrpos,file_exists,move_uploaded_file,is_uploaded_file,mkdir)
- 上传文件中使用ajaxfileupload.js碰到的问题
- 上传android lib到jcenter库上面碰到的一些问题,以及解决办法
- 使用ajaxfileupload.js进行文件上传,出现的问题以及解决办法
- ajaxFileUpload 上传文件 以及 返回值 带 <pre> 标签问题
- file上传按钮替换以及解决IE浏览器隐藏file按钮不能上传文件问题
- ajax图片上传及时回显图片,自己总结 + ajaxFileUpload 上传文件 以及 返回值 带 <pre> 标签问题
- HTML通过button触发input-file控件上传文件的问题
- 表单包含file上传文件提交,使用ajaxSubmint或者ajaxForm 遇到的问题以及解决方法
- jQuery 文件上传插件ajaxFileUpload使用以及onchange问题
- Mac中用Ant实现Android的批量打包碰到的一些问题以及解决方法
- commons fileupload 文件上传乱码问题解决方案 + request.getParameter无法得到参数问题
- 看代码过程中碰到的一些问题以及笔记
- QQ登录界面出现????QQ?? 以及一些文件出现乱码问题
- asp.net 通过HtmlInputFile控件上传文件的类
- Struts2中文件过大上传失败问题解决方案org.apache.commons.fileupload.FileUploadBase$SizeLimitExceededException
- [导入]IIS+Tomcat整合上传以及静态文件缓存问题!
- 用文件框上传文件示例(HtmlInputFile)