Asp.net mvc 大文件上传 断点续传 进度条

 

概述

项目中需要一个上传200M-500M的文件大小的功能,需要断点续传、上传性能稳定、突破asp.net上传限制。一开始看到51CTO上的这篇文章,此方法确实很不错,能够稳定的上传大文件,http://developer.51cto.com/art/201002/183218_1.htm,但是很遗憾的是由于我技术不精湛,无法修改成能够支持断点续传。然后在网上找了很多资料,但是都无法满足我的功能,有些说要ftp,有些说要是Silverlight,都有很多说辞,我也试过很多方法,下载过很多代码,但那都不是我想要的。我想要的是一个简单,功能又齐全的大文件上传功能。

  1. 只想用http协议,不想走FTP协议
  2. 只想上传大文件,不想受ASP.NET 2G大小限制
  3. 不想购买一些付费的上传组件
  4. 上传过程中能够删除文件
  5. 上传过程中能够显示进度条
  6. 上传过程中能够暂停上传
  7. 上传过程中出现异常,能够接着上传(断点续传)

如果你想满足上述功能,或者想扩展更多功能。你就往下看

在网上找案例、方法期间在一篇文章中给了我很大的启发。

  1. http://open.dbank.com/wiki/index.php?title=%E6%95%B0%E6%8D%AE%E4%B8%8A%E4%BC%A0 里面的Range属性。
  2. 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是怎么实现的,但是我这样做确实能够让它下次上传同一个文件时它会帮我处理。

Code

由于个人原因,也无法描述的更加好,把源代码贴上供大家下载,希望能够有更好的解决方案出现,也希望能够给大家一点启发与帮助。谢谢

 
 
分类: .NetAsp.NetJQuery

Asp.net mvc 大文件上传 断点续传的更多相关文章

  1. Asp.net mvc 大文件上传 断点续传 进度条

    概述 项目中需要一个上传200M-500M的文件大小的功能,需要断点续传.上传性能稳定.突破asp.net上传限制.一开始看到51CTO上的这篇文章,此方法确实很不错,能够稳定的上传大文件,http: ...

  2. asp.net mvc大文件上传、断点续传功能。

    文件夹数据库处理逻辑 publicclass DbFolder { JSONObject root; public DbFolder() { this.root = new JSONObject(); ...

  3. MVC图片上传、浏览、删除 ASP.NET MVC之文件上传【一】(八) ASP.NET MVC 图片上传到服务器

    MVC图片上传.浏览.删除   1.存储配置信息 在web.config中,添加配置信息节点 <appSettings> <add key="UploadPath" ...

  4. ASP.NET对大文件上传的解决方案

    在ASP.NET 开发的过程中,最大的问题就在于上传大文件时让开发者尤为的头疼,而且,上传时无法方便的做到多线程的操控和上传进度的显示.笔者在此给大家推荐一款简单易用的上传组件,从而快速便捷得解决了 ...

  5. JS大文件上传断点续传解决方案

    1 背景 用户本地有一份txt或者csv文件,无论是从业务数据库导出.还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工.挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通 ...

  6. Web大文件上传断点续传解决方案

    最近遇见一个需要上传百兆大文件的需求,调研了七牛和腾讯云的切片分段上传功能,因此在此整理前端大文件上传相关功能的实现. 在某些业务中,大文件上传是一个比较重要的交互场景,如上传入库比较大的Excel表 ...

  7. java 大文件上传 断点续传 完整版实例 (Socket、IO流)

    ava两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路: 1.服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操 ...

  8. asp.net实现大文件上传分片上传断点续传

    HTML部分 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="index.a ...

  9. ASP.NET大文件上传断点续传解决方案

    HTML部分 <%@PageLanguage="C#"AutoEventWireup="true"CodeBehind="index.aspx. ...

随机推荐

  1. C#如何设置session过期时间

    1.操作系统  步骤:开始——〉管理工具——〉Internet信息服务(IIS)管理器——〉网站——〉默认网站——〉  右键“属性”——〉主目录——〉配置——〉选项——〉启用会话状态——〉会话超时(在 ...

  2. Apache conf文件配置个人总结

      其实说到conf文件的配置,网上那必定是大堆大堆的,故今儿写着篇小博文,也只是做个总结,至于分享的价值吗,如果对屏幕前的你有用,我也很乐意啦.   首先,我们要找到Apache安装目录,我的是Ap ...

  3. CQRS 示例

    CQRS 示例 上一篇:<IDDD 实现领域驱动设计-CQRS(命令查询职责分离)和 EDA(事件驱动架构)> 学习架构知识,需要有一些功底和经验,要不然你会和我一样吃力,CQRS.EDA ...

  4. TFTP server组态

    TFTP server组态 2014-10-31北京海淀区  张俊浩 一.TFTP(Trivial File Transfer Protocol,简单文件传输协议或称小型文件传输协议) 是一种简化的文 ...

  5. 【云图】如何制作全国KTV查询系统?

    原文:[云图]如何制作全国KTV查询系统? 摘要:本文以[唱吧]531麦霸音乐节为案例,详细解读了如何导入自有数据到高德云图,并进行检索和展示.最后,调起高德mobile地图来进行路线规划和周边查询. ...

  6. Java初始阶段

    初时接触感觉Java与C语言有很多异曲同工之处. Java起源: Java之父:James Gosling 正式发布时间:1995年5月23日 其特点为:简单.面向对象.可移植.多线程.动态 其编译后 ...

  7. DFGUI-- 标签交换 Tabstrip

    DFGUI没有更新,事实上,有些遗憾. 它着重于一个小 Examples/Containers/TabContainer.unity 那是,Tab采用. 功能 非常easy.就是切换Tag 内容改变. ...

  8. 使用AndroidStudio快速开发教程

    关于AndroidStudio的使用 参考:http://www.codes51.com/article/detail_98914.html  1.对于开发环境的通性:编写 调试 视图   一般的开发 ...

  9. 使用 COM 风格的编程接口

    使用COM 风格的编程接口 假设不直接使用 COM 库.不创建自己的包装.那么更可能的是使用 COM 风格的编程接口.这是由于如今很多开发商公布应用程序时.提供了首选的互操作程序集(Primary I ...

  10. expected number,sequence,or string.map evaluated instead of freemarker.template.smplehash

    expected number,sequence,or string.map evaluated instead of freemarker.template.smplehash 使用freemark ...