人本善良

导航

< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5

统计

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; } } }
复制代码

 

posted on   简简单单2018  阅读(1486)  评论(0编辑  收藏  举报

编辑推荐:
· 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搭建本
点击右上角即可分享
微信分享提示