Asp.net mvc 大文件上传 断点续传
Asp.net mvc 大文件上传 断点续传 进度条
概述
项目中需要一个上传200M-500M的文件大小的功能,需要断点续传、上传性能稳定、突破asp.net上传限制。一开始看到51CTO上的这篇文章,此方法确实很不错,能够稳定的上传大文件,http://developer.51cto.com/art/201002/183218_1.htm,但是很遗憾的是由于我技术不精湛,无法修改成能够支持断点续传。然后在网上找了很多资料,但是都无法满足我的功能,有些说要ftp,有些说要是Silverlight,都有很多说辞,我也试过很多方法,下载过很多代码,但那都不是我想要的。我想要的是一个简单,功能又齐全的大文件上传功能。
- 只想用http协议,不想走FTP协议
- 只想上传大文件,不想受ASP.NET 2G大小限制
- 不想购买一些付费的上传组件
- 上传过程中能够删除文件
- 上传过程中能够显示进度条
- 上传过程中能够暂停上传
- 上传过程中出现异常,能够接着上传(断点续传)
如果你想满足上述功能,或者想扩展更多功能。你就往下看
在网上找案例、方法期间在一篇文章中给了我很大的启发。
- http://open.dbank.com/wiki/index.php?title=%E6%95%B0%E6%8D%AE%E4%B8%8A%E4%BC%A0 里面的Range属性。
- http://www.cnblogs.com/ASPNET2008/p/3360427.html 里面的分块上传,虽然作者也写了断点续传代码,但是通过我的测试与研究发现,他的代码并没有真正意义上的断点续传,他只是将已经上传的那部分文件流舍弃掉,然后等上传到了那块位置的时候才开始附加到磁盘文件,这样并没有提高上传效率,我的代码就是在他的代码上稍作修改的结果
最终效果图
大文件上传
大文件上传我也不想多说。本文及案例重点是断点续传。大文件上传有很多上传案例,而且都非常不错,也非常成熟。可以google一大把。
断点续传
此方法经测试压缩文件似乎会出现问题
在提前研究这功能期间,一直都有一个思路就是:假如我上传了100M,突然有断网等异常情况,那我下次上传就应该从磁盘文件的最后位置开始上传。
上述思路应该是没有问题的,可是在解决这个问题的时候总是困难重重,服务器端不能直接读取客户端文件,也不能直接要求客户端从什么位置开始读。
然后知道Jquery里面有一款插件叫Jquery File Upload,也就是上面写断点续传哥们用到的插件,它能够对文件进行分块上传,也就是说每次上传只是上传文件的一部分,就像我们.Net操作文件流一样,读取文件的一部分字节。
首先看Jquery File Upload分块后正常情况的报文
请求时发送一个字节区间。我就在响应报文头里面加了一个Range属性,告诉Jquery File upload我当前处理的位置是多少。虽然我到目前都没明白Jquery File Upload是怎么实现的,但是我这样做确实能够让它下次上传同一个文件时它会帮我处理。
由于个人原因,也无法描述的更加好,把源代码贴上供大家下载,希望能够有更好的解决方案出现,也希望能够给大家一点启发与帮助。谢谢
Asp.net mvc 大文件上传 断点续传的更多相关文章
- Asp.net mvc 大文件上传 断点续传 进度条
概述 项目中需要一个上传200M-500M的文件大小的功能,需要断点续传.上传性能稳定.突破asp.net上传限制.一开始看到51CTO上的这篇文章,此方法确实很不错,能够稳定的上传大文件,http: ...
- asp.net mvc大文件上传、断点续传功能。
文件夹数据库处理逻辑 publicclass DbFolder { JSONObject root; public DbFolder() { this.root = new JSONObject(); ...
- MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器
MVC图片上传.浏览.删除 1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...
- ASP.NET对大文件上传的解决方案
在ASP.NET 开发的过程中,最大的问题就在于上传大文件时让开发者尤为的头疼,而且,上传时无法方便的做到多线程的操控和上传进度的显示.笔者在此给大家推荐一款简单易用的上传组件,从而快速便捷得解决了 ...
- JS大文件上传断点续传解决方案
1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...
- Web大文件上传断点续传解决方案
最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...
- java 大文件上传 断点续传 完整版实例 (Socket、IO流)
ava两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路: 1.服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操 ...
- asp.net实现大文件上传分片上传断点续传
HTML部分 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.a ...
- ASP.NET大文件上传断点续传解决方案
HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx. ...
随机推荐
- 经典算法题每日演练——第十六题 Kruskal算法
原文:经典算法题每日演练--第十六题 Kruskal算法 这篇我们看看第二种生成树的Kruskal算法,这个算法的魅力在于我们可以打一下算法和数据结构的组合拳,很有意思的. 一:思想 若存在M={0, ...
- Linux_下安装MySQL
linux下mysql 最新版安装图解教程 1.查看当前安装的linux版本 命令:lsb_release -a 如下图所示 通过上图中的数据可以看出安装的版本为RedHat5.4,所以我们需要下载R ...
- 【翻译】C#和.NET核心快速参考
原文:[翻译]C#和.NET核心快速参考 PS:在网上看到的一篇C#总结,英文的,总结的还可以,都是基础知识,翻译给大家学习.文章结尾有英文原版.发布地址:http://www.cnblogs.com ...
- 【LeetCode】Set Matrix Zeroes 解题报告
今天看到CSDN博客的勋章换了图表,同一时候也添加显示了博客等级,看起来都听清新的,感觉不错! [题目] Given a m x n matrix, if an element is 0, set i ...
- 教你一步一步部署.net免费空间OpenShift系列之二------创建应用
接上回书,注册完毕后需要在Openshift上创建一个应用空间,如如何创建空间呢,Openshift本身是不直接支持Mono来部署ASP.Net程序的,需要借助openshift-community- ...
- GitBook配置
GitBook 是一个通过 Git 和 Markdown 来撰写书籍的工具.生成格式有:JSON.ePub.PDF.Website ! ================================ ...
- .NET 各种问题汇总
1.i++ 与++i的区别 using System; class TestApp { public static void Main() { int i = 8; int count = ++i;/ ...
- MVC 验证码
验证码类 public class VerifyCode { public string checkCode = String.Empty; public byte[] BuildImg() { in ...
- 转载:Eclipse+Spket插件+ExtJs4修改版提供代码提示功能[图]
转载:Eclipse+Spket插件+ExtJs4修改版提供代码提示功能[图] ExtJs是一种主要用于创建前端用户界面,是一个基本与后台技术无关的前端ajax框架.功能丰富,无人能出其右.无论是界面 ...
- IE6下jquery ajax报error的原因
用jquery ajax()方法,在其他浏览都通过,IE7以上都通过,唯独在ie6不行. 我这边的解决方案是:必须保证ajax里面的所有数字为小写,ie6对大小写敏感. 错误: $.ajax({ ur ...