首页 > 代码库 > 记一次jquery file upload的断点续传的问题的纠结历程
记一次jquery file upload的断点续传的问题的纠结历程
相关参考:http://www.cnblogs.com/ASPNET2008/p/3360427.html
开始打算做断点续传的时候直接拷贝的这一串代码,放到我的项目里面之后Request.Files中的Filename获取到的一直是"blob",
然后我就拖啊拖了很久,后来打算放弃掉不做了,昨天测试Jquer File Upload这个上传组件的时候发现超过2G的文件死都传不上去!
1 <system.web>2 <httpRuntime maxRequestLength="2147483647" executionTimeout="3600"/>3 <compilation debug="true" targetFramework="4.0"/>4 <customErrors mode="Off"/>5 </system.web>
后来发现设置完之后支持的最大文件大小就差不多2G左右的样子,然后我又重新去做文件的断点续传!希望可以搞定这个问题!
但是!还是获取不到FileName!!!!
然后!我就换了一种方式用了Request.Headers["X-File-Name"],果然获取到FileName了!
但是!saveas里面又得不到content-range的值了!
又是一番纠结之后,发现是因为我用的插件的版本太低了。。然后!我又去官网上下载了最新版本的插件!
果然!不存在FileName和content-range获取不到的问题了!
又但是!超出2G的文件2G以上的部分还是不能上传!也是败给那个博主了!根本没有考虑过超大文件的问题嘛!
1 private void SaveAs(string saveFilePath, HttpPostedFile file) 2 { 3 long lStartPos = 0; 4 int startPosition = 0; 5 int endPosition = 0; 6 var contentRange=HttpContext.Current.Request.Headers["Content-Range"]; 7 //bytes 10000-19999/1157632 8 if (!string.IsNullOrEmpty(contentRange)) 9 {10 contentRange = contentRange.Replace("bytes", "").Trim();11 contentRange = contentRange.Substring(0, contentRange.IndexOf("/"));12 string[] ranges = contentRange.Split(‘-‘);13 startPosition = int.Parse(ranges[0]);14 endPosition = int.Parse(ranges[1]);15 }16 System.IO.FileStream fs;17 if (System.IO.File.Exists(saveFilePath))18 {19 fs = System.IO.File.OpenWrite(saveFilePath);20 lStartPos = fs.Length;21 22 }23 else24 {25 fs = new System.IO.FileStream(saveFilePath, System.IO.FileMode.Create);26 lStartPos = 0;27 }28 if (lStartPos > endPosition)29 {30 fs.Close();31 return;32 }33 else if (lStartPos < startPosition)34 {35 lStartPos = startPosition;36 }37 else if (lStartPos > startPosition && lStartPos < endPosition)38 {39 lStartPos = startPosition;40 }41 fs.Seek(lStartPos, System.IO.SeekOrigin.Current);42 byte[] nbytes = new byte[512];43 int nReadSize = 0;44 nReadSize = file.InputStream.Read(nbytes, 0, 512);45 while (nReadSize > 0)46 {47 fs.Write(nbytes, 0, nReadSize);48 nReadSize = file.InputStream.Read(nbytes, 0, 512);49 }50 fs.Close(); 51 }
注意13行!14行!文件字节超出2G的时候int已经超出范围!
就是要把变量设置成long的数据类型嘛!
终于,一个多月过去了。。。
还是被我搞定了啊哈哈哈哈!!!!!
记一次jquery file upload的断点续传的问题的纠结历程
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。