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. ...
随机推荐
- Linux入门介绍
Linux入门介绍 一.Linux 初步介绍 Linux的优点 免费的,开源的 支持多线程,多用户 安全性好 对内存和文件管理优越 系统稳定 消耗资源少 Linux的缺点 操作相对困难 一些专业软件以 ...
- matlab配置Libsvm 防止备忘录
1 首先我们要下载一个Libsvm 工具箱 其中,这一切都可以被下载到 2 我们解包 我解压在桌面上 住址C:\Users\Administrator\Desktop\libsvm 3打开matlab ...
- oracle_面试题
SELECT a.name ,IFNULL(b.name,"BOSS") FROM boss a LEFT JOIN boss b ON a.MANAGER_ID = b.ID 员 ...
- csu 1503: 点弧之间的距离-湖南省第十届大学生计算机程序设计大赛
这是--比量p并用交点连接中心不上弧.在于:它至p距离.是不是p与端点之间的最短距离 #include<iostream> #include<map> #include< ...
- js 控制radio选项
<input type="radio" name="rk" value="aaa" />1<input type=&quo ...
- 我的MYSQL学习心得(十)
原文:我的MYSQL学习心得(十) 我的MYSQL学习心得(十) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL ...
- Monkey源码分析之事件源
上一篇文章<Monkey源码分析之运行流程>给出了monkey运行的整个流程,让我们有一个概貌,那么往后的文章我们会尝试进一步的阐述相关的一些知识点. 这里先把整个monkey类的结构图给 ...
- C#验证IP地址
using System.Net; try { IPAddress a = IPAddress.Parse(输入的IP字符串); } catch (System.Exception ex) { Mes ...
- MVC+Jqgrid
基于MVC+Jqgrid的列表页面 2014-12-08 12:01 by 刘尼玛, 1583 阅读, 20 评论, 收藏, 编辑 一.前言 “尼玛哥,上周你教我改了下OA系统UI,黄总看了很满意呀. ...
- 安装Windows操作系统的驱动程序(驱动精灵版) - 进阶者系列 - 学习者系列文章
安装完操作系统之后,就需要安装对应的驱动程序了.下面就简要介绍下驱动程序的安装.以驱动精灵驱动安装软件为例. 1. 下载驱动精灵. 从http://www.drivergenius.com/网站下载 ...