1. //javascript 代码
    $("#submite").click(function (evt) {
  2.  
  3. var arrayTr = $("#datatables").find("tbody").find("tr");
  4. $(arrayTr).each(function (index, value) {
  5. var data = new FormData();
  6. $(value).find("input[type='file']").each(function (i, file) {
  7. if (file.files[0] != undefined) {
  8. data.append(file.files[0].name + i, file.files[0]);
  9. }
  10. });
  11.  
  12. data.append("modelKey", JSON.stringify(datas.data[index]))
  13.  
  14. //apis.certificate.httpRequestPost(apis.certificate.UploadCertificate, data, function () { alert("success") });
  15.  
  16. $.ajax({
  17. url: apis.certificate.UploadCertificate,
  18. type: "POST",
  19. data: data,
  20. contentType: false,
  21. processData: false,
  22. success: function (result) { alert(result); },
  23. error: function (err) {
  24. alert(err.statusText)
  25. }
  26. });
  27.  
  28. });
  29.  
  30. });

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

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

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

  1. modeldo m = Newtonsoft.Json.JsonConvert.DeserializeObject<modeldo>(json);
  2. HttpFileCollection _file = System.Web.HttpContext.Current.Request.Files;
  3. Tuple<modeldo, HttpFileCollection> model = new Tuple<modeldo, HttpFileCollection>(m, _file);
  4. ThreadPool.QueueUserWorkItem(threadDo, model); //这里用异步多线程可能会存在问题 导致后续文件无法完全上传 可以直接调用
  1. }
  2. public void threadDo(object o)
  3. {
  4. HttpFileCollection _file = (HttpFileCollection)(((Tuple<modeldo, HttpFileCollection>)o).Item2);
  5. modeldo m = (modeldo)((Tuple<modeldo, HttpFileCollection>)o).Item1;
  6. for (int i = 0; i < _file.Count; i++)
  7. {
  8. int CatagoryId = Convert.ToInt32(_file.AllKeys[i].Substring(_file.AllKeys[i].Length - 1));
  9. switch (CatagoryId)
  10. {
  11. case 0:
  12. m.CurrentCertificatePutAddress = UploadFile(_file[i]);
  13. m.CurrentCertificatePutAddressName = _file[i].FileName;
  14. break;
  15. case 1:
  16. m.CurrentCostSettleRule = UploadFile(_file[i]);
  17. m.CurrentCostSettleRuleName = _file[i].FileName;
  18. break;
  19. case 2:
  20. m.CurrentCostSettleCertificate = UploadFile(_file[i]);
  21. m.CurrentCostSettleCertificateName = _file[i].FileName;
  22. break;
  23. case 3:
  24. m.CurrentContract = UploadFile(_file[i]);
  25. m.CurrentContractName = _file[i].FileName;
  26. break;
  27. }
  28. }
  29. ConsumptionCertificatedetail certificateModel = new ConsumptionCertificatedetail();
  30. certificateModel.CertificateNumber = m.CertificateNumber;//2017-06-01 - 2017-06-30
  31. certificateModel.CurrentCertificateStart = m.CurrentCertificateSection.Split('~')[0];
  32. certificateModel.CurrentCertificateEnd = m.CurrentCertificateSection.Split('~')[1];
  33. certificateModel.CurrentContract = m.CurrentContract;
  34. certificateModel.CurrentContractName = m.CurrentContractName;
  35. certificateModel.CurrentCertificatePutTxt = m.CurrentCertificatePutTxt;
  36. certificateModel.CurrentCertificatePutAddressName = m.CurrentCertificatePutAddressName;
  37. certificateModel.CurrentCertificatePutAddress = m.CurrentCertificatePutAddress;
  38. certificateModel.CurrentCostSettleCertificate = m.CurrentCostSettleCertificate;
  39. certificateModel.CurrentCostSettleCertificateName = m.CurrentCostSettleCertificateName;
  40. certificateModel.CurrentCostSettleCertificateTxt = m.CurrentCostSettleCertificateTxt;
  41. certificateModel.CurrentCostSettleRule = m.CurrentCostSettleRule;
  42. certificateModel.CurrentCostSettleRuleName = m.CurrentCostSettleRuleName;
  43. certificateModel.CurrentCostSettleRuleTxt = m.CurrentCostSettleRuleTxt;
  44. certificateModel.CurrentPutUrl = m.CurrentPutUrl;
  45. bus.AddcertificateDetail(certificateModel);
  46. //long size = _file[0].ContentLength;
  47. ////文件类型
  48. //string type = _file[0].ContentType;
  49. ////文件名
  50. //string name = _file[0].FileName;
  51. ////文件格式
  52. //string _tp = System.IO.Path.GetExtension(name);
  53. }
  54. public string UploadFile(HttpPostedFile Files)
  55. {
  56. int FileLenth = Files.ContentLength;
  57. byte[] buffur = new byte[FileLenth];
  58. using (BinaryReader br = new BinaryReader(Files.InputStream, Encoding.UTF8))
  59. {
  60. buffur = br.ReadBytes(FileLenth);
  61. br.Close();
  62. br.Dispose();
  63. }
  64. DFSClient client = new DFSClient();
  65. string url= client.UploadFile(buffur, System.IO.Path.GetExtension(Files.FileName).Substring(1, System.IO.Path.GetExtension(Files.FileName).Length-1));
  66. return url;
  67. }
  68. }
  69. public class modeldo : ConsumptionCertificatedetail
  70. {
  71. public string CurrentCertificateSection { get; set; }
  72. }
  73. }

html file 文件批量上传 以及碰到的一些问题提的更多相关文章

  1. 带进度条的文件批量上传插件uploadify

    有时项目中需要一个文件批量上传功能时,个人认为uploadify是快速简便的解决方案. 先上效果图: 一. 下载uploadify 从官网下载uploadify的Flash版本(Flash版本免费,另 ...

  2. 使用WebUploader实现文件批量上传,进度条显示功能

    知识点:利用WebUploader,实现文件批量上传,并且实时显示文件的上传进度 参考官方文档:http://fex.baidu.com/webuploader/ (1)引入三个资源 JS,CSS,S ...

  3. jquery文件批量上传控件Uploadify3.2(java springMVC)

    人比較懒  有用为主 不怎么排版了 先放上Uploadify的官网链接:http://www.uploadify.com/  -->里面能够看到PHP的演示样例,属性说明,以及控件下载地址.分f ...

  4. SpringMVC+Ajax实现文件批量上传和下载功能实例代码

    需求: 文件批量上传,支持断点续传. 文件批量下载,支持断点续传. 使用JS能够实现批量下载,能够提供接口从指定url中下载文件并保存在本地指定路径中. 服务器不需要打包. 支持大文件断点下载.比如下 ...

  5. 文件批量上传的工具,要实现暂停继续、断点续传等功能(使用QtNetwork和QHttpMultiPart,和定时器检查超时)

    最近在做一个文件批量上传的工具,要实现暂停继续.断点续传等功能.利用Qt自带的QtNetwork模块,完成这些需求并没有费多少周章,主要思路就是将文件分块,然后用while循环依次传输.具体实现代码比 ...

  6. 文件批量上传-统一附件管理器-在线预览文件(有互联网和没有两种)--SNF快速开发平台3.0

    实际上在SNF里使用附件管理是非常简单的事情,一句代码就可以搞定.但我也要在这里记录一下统一附件管理器能满足的需求. 通用的附件管理,不要重复开发,调用尽量简洁. 批量文件上传,并对每个文件大小限制, ...

  7. input file multiple 批量上传文件

    这几天维护系统,有一个批量上传文件功能,出现了一点小问题 我的笔记本选择要上传的文件很正常 但在测试环境上,别人的电脑上,选择上传文件之后 一开始,以为是代码问题,网上找了很多的资料,但还是没用,然后 ...

  8. 利用uploadify+asp.net 实现大文件批量上传。

    前言 现在网上文件上传组件随便一搜都是一大堆,不过看大家一般都在用uploadify这个来上传文件.由于项目需要,我在来试了一下.因为第一次使用,也遇到了很多问题,特此记录! ------------ ...

  9. uploadify文件批量上传

    uploadify能够时间文件的批量上传,JS文件包下载地址,使用说明可以参考官网文档(http://www.uploadify.com/documentation/) 使用方法如下代码: $(&qu ...

随机推荐

  1. Django Admin 时间格式化

    http://961911.blog.51cto.com/951911/1557218 修改settings.py,添加一下内容: USE_L10N = False DATETIME_FORMAT = ...

  2. SQL SERVER 2008 彻底卸载干净方法 (转)

    最近安装SQL SERVER 2008失败后,再重新安装时老是报错,东搞西搞的很难卸干净.但又不方便重装系统,经按下面方法终于搞定并成功安装上2008 1.停掉SQL SERVER 2008所有相关服 ...

  3. 解决webpack不是内部命令

    在指定路径下安装webpack npm install webpack --save-dev 但是报”不是内部命令错误" 解决方法:安装全局webpack   npm install web ...

  4. 从Vue文件到Html文件

    如下图,通过webpack打包工具,将一个Vue文件生成html,css,js文件.其中js对应的是new Vue({})

  5. golang fmt用法举例

    下标与参数的对应 例子如下: package main import ( "fmt" ) func main() { num := 10 fmt.Printf("num: ...

  6. Java 浅析 Thread.join()

    概要 本文分为三部分对 Thread.join() 进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() ...

  7. DP Coins hdoj

    Coins Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submiss ...

  8. [转]win server 2003 + IIS 6 搭建MVC 运行环境

    本文来自:http://c.jinhusns.com/bar/t-993 win server 2003 + IIS 6 搭建MVC 运行环境 上一篇 下一篇近乎_问阳 发表于:2014-01-07 ...

  9. 从线性回归到CNN【转】

    原地址:http://zhangliliang.com/2014/06/14/from-lr-to-cnn/ csdn:    http://blog.csdn.net/t0903/article/d ...

  10. unity3d中物体的控制

    一.物体的循环移动和旋转 思路:通过对时间的计算,每隔一段时间让物体旋转,实现来回移动. float TranslateSpeed = 0.02f; float TranslateSpeedTime ...