ASP.NET如何实现断点续传的上传、下载功能?

1 背景用户本地有一份txt或者csv文件,无论是从业务数据库导出、还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工、挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通过浏览器上传至服务器,做一层中转便可以实现,但当这份文件非常大到了10GB级别,我们就需要思考另一种形式的技术方案了,也就是本文要阐述的方案。技术要求主要有以下几方面:用户向应用服务器取到上传policy和回调设置。应用服务器返回上传policy和回调。用户直接向OSS发送文件上传请求。   等文件数据上传完,OSS给用户Response前,OSS会根据用户的回调设置,请求用户的服务器。如果应用服务器返回成功,那么就返回用户成功,如果应用服务器返回失败,那么OSS也返回给用户失败。这样确保了用户上传成功,应用服务器已经收到通知了。应用服务器给OSS返回。OSS将应用服务器返回的内容返回给用户。启动后台同步引擎执行oss到odps的数据同步。同步实时进度返回返回给应用服务器,同时展示给用户。4 技术方案4.1 上传OSS提供了丰富的S...

ASP.NET实现文件断点续传

IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag        客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续传的下载:Accept-Ranges:告知下载客户端这是一个可以恢复续传的下载,存放本次下载的开始字节位置、文件的字节大小;ETag:保存文件的唯一标识(我在用的文件名+文件最后修改时间,以便续传请求时对文件进行验证);Last-Modified:可选响应头,存放服务端文件的最后修改时间,用于验证 二. 一个重要请求头RangeRange:首次下载时,Range头为null,此时服务端的响应头中必须添加响应头Accept-Ranges、ETag;            &n...

网页端如何实现文件上传并支持断点续传?

1 背景用户本地有一份txt或者csv文件,无论是从业务数据库导出、还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工、挖掘和共创应用的时候,首先要将本地文件上传至ODPS,普通的小文件通过浏览器上传至服务器,做一层中转便可以实现,但当这份文件非常大到了10GB级别,我们就需要思考另一种形式的技术方案了,也就是本文要阐述的方案。技术要求主要有以下几方面:用户向应用服务器取到上传policy和回调设置。应用服务器返回上传policy和回调。用户直接向OSS发送文件上传请求。   等文件数据上传完,OSS给用户Response前,OSS会根据用户的回调设置,请求用户的服务器。如果应用服务器返回成功,那么就返回用户成功,如果应用服务器返回失败,那么OSS也返回给用户失败。这样确保了用户上传成功,应用服务器已经收到通知了。应用服务器给OSS返回。OSS将应用服务器返回的内容返回给用户。启动后台同步引擎执行oss到odps的数据同步。同步实时进度返回返回给应用服务器,同时展示给用户。4 技术方案4.1 上传OSS提供了丰富的S...

网页实现文件分片上传、断点续传

java两台服务器之间,大文件上传(续传),采用了Socket通信机制以及JavaIO流两个技术点,具体思路如下: 实现思路:1、服:利用ServerSocket搭建服务器,开启相应端口,进行长连接操作2、服:使用ServerSocket.accept()方法进行阻塞,接收客户端请求3、服:每接收到一个Socket就建立一个新的线程来处理它4、客:利用Socket进行远程连接,询问已上传进度5、客:使用FileInputStream.skip(longlength)从指定位置读取文件,向服务器发送文件流6、服:接收客户端输入流,使用RandomAccessFile.seek(longlength)随机读取,将游标移动到指定位置进行读写7、客/服:一个循环输出,一个循环读取写入8、示例:以下是具体代码,仅供参考文件介绍:FileUpLoadServer.java(服务器接收文件类)FileUpLoadClient.java(客户端发送文件类)FinalVariables.java(自定义参数类)SocketServerListener.java(JavaWeb启动Socket操...

c# B/S下 如何优化文件上传速度和实现断点续传问题

IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag        客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续传的下载:Accept-Ranges:告知下载客户端这是一个可以恢复续传的下载,存放本次下载的开始字节位置、文件的字节大小;ETag:保存文件的唯一标识(我在用的文件名+文件最后修改时间,以便续传请求时对文件进行验证);Last-Modified:可选响应头,存放服务端文件的最后修改时间,用于验证 二. 一个重要请求头RangeRange:首次下载时,Range头为null,此时服务端的响应头中必须添加响应头Accept-Ranges、ETag;            &n...

webUploader---实现大文件断点续传

核心原理: 该项目核心就是文件分块上传。前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题。* 如何分片;* 如何合成一个文件;* 中断了从哪个分片开始。如何分,利用强大的js库,来减轻我们的工作,市场上已经能有关于大文件分块的轮子,虽然程序员的天性曾迫使我重新造轮子。但是因为时间的关系还有工作的关系,我只能罢休了。最后我选择了百度的WebUploader来实现前端所需。如何合,在合之前,我们还得先解决一个问题,我们如何区分分块所属那个文件的。刚开始的时候,我是采用了前端生成了唯一uuid来做文件的标志,在每个分片请求上带上。不过后来在做秒传的时候我放弃了,采用了Md5来维护分块和文件关系。在服务端合并文件,和记录分块的问题,在这方面其实行业已经给了很好的解决方案了。参考迅雷,你会发现,每次下载中的时候,都会有两个文件,一个文件主体,另外一个就是文件临时文件,临时文件存储着每个分块对应字节位的状态。这些都是需要前后端密切联系才能做好,前端需要根据固定大小对文件进行分片,并且请求中要带上分片序号和大小。前...

Html5大文件断点续传实现方法

之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需求,都能得到满足。小小开心了一把。  但无论插件再怎么灵活,也难以应付所有的需求,比如,你要上传一个2G的文件。以现在我们的网速,恐怕再快也得传半小时。要命的是,如果你在上传到90%的时候不小心关掉了浏览器,或者是手一抖摁了F5,完了,一切还得从头再来。这种用户体验简直太糟糕了。所以,断点续传就十分有必要了。什么是续传我就不解释了,用QQ传文件这么多年,大家都见过了。  这里要说的是断点续传都有哪些技术要点。使用传统的表单提交文件或是HTML5的FormData都是将文件“整块”提交,服务端取到该文件后再进行转移、重命名等操作,因此,无法实时保存文件的已上传部分。而且在http协议下,我们无法保持浏览器与服务端的长连接,不能以文件流的形式来提交。所以要解决的问题具体来讲有以下几点:对上传的文件进行分割,每次只上传一小片。服务端...

使用webuploader组件实现文件分片上传,断点续传

本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案。见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案。本人在2013年时使用plupload为核心进行文件的批量上传的解决方案。见文章:WEB版一次选择多个文件进行批量上传(Plupload)的解决方案最近在学习百度的开源上传组件WebUploader,写了一些示例以记录。WebUploader的缺点是没有一个比较好的现成的界面,这个界面需要自己去实现。自由度高了一些。WebUploader是由BaiduWebFE(FEX)团队开发的一个简单的以HTML5为主,FLASH为辅的现代文件上传组件。在现代的浏览器里面能充分发挥HTML5的优势,同时又不摒弃主流IE浏览器,沿用原来的FLASH运行时,兼容IE6+,iOS6+,android4+。两套运行时,同样的调用方式,可供用户任意选用。浏览器支持ie6,ie7,ie8,ie9,ie10,ie11,firefox,chrome,edge。支持全平台操作系统:Windows,Mac,Linux支持文件夹上传下载,文件批量上传下载,层级目录保存...

webUploader实现文件分片,断点续传

这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数下面直接贴代码吧,一些难懂的我大部分都加上注释了:上传文件实体类:看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如MD5秒传的信息。publicclassFileInf {      public FileInf(){}     publicStringid="";     publicStringpid="";    publicStringpidRoot="";        /**  * 表示当前项是否是一个文件夹项。    */    &...

php大文件上传支持断点上传

文件夹数据库处理逻辑publicclass DbFolder{    JSONObjectroot;       public DbFolder()    {        this.root= new JSONObject();        this.root.put("f_id", "");        this.root.put("f_nameLoc", "根目录");        this.root.put("f_pid", "");&nbs...

php如何实现大文件断点续传-php文件

总结一下大文件分片上传断点续传的问题。因为文件过大(比如1G以上),必须要考虑上传过程网络中断的情况。http的网络请求中本身就已经具备了分片上传功能,当传输的文件比较大时,http协议自动会将文件切片(分块),但这不是我们现在说的重点,我们要做的事是保证在网络中断后1G的文件上传的那部分在下次网络连接时不必再重传。所以我们本地在上传的时候,要将大文件进行分片,比如分成1024*1024B,即将大文件分成1M的片进行上传,服务器在接收后,再将这些片合并成原始文件,这就是分片的基本原理。断点续传要求本地要记录每一片的上传的状态,我通过三个状态进行了标记(wait loading finish),当网络中断,再次连接后,从断点处进行上传。服务器通过文件名、总片数判断该文件是否已全部上传完成。    下面来说细节: 1、首先获取文件(音视频、图片)分两种情况,一种是在相册库里直接获取,一种是调用相机。如果是通过UIImagePickerView来获取(细节不详述,网上一大堆),我们会发现当你选定一个视频的时候,会出现图...

PHP 大文件上传,支持断点续传,求具体方案、源码或者文件上传插件

文件夹数据库处理逻辑publicclass DbFolder{    JSONObjectroot;       public DbFolder()    {        this.root= new JSONObject();        this.root.put("f_id", "");        this.root.put("f_nameLoc", "根目录");        this.root.put("f_pid", "");&nbs...

PHP+FLASH大文件断点续传功能分享

1.使用PHP的创始人RasmusLerdorf写的APC扩展模块来实现(http://pecl.php.net/package/apc)APC实现方法:安装APC,参照官方文档安装,可以使用PECL模块安装方法快速简捷,这里不说明配置php.ini,设置参数apc.rfc1867=1,使APC支持上传进度条功能,在APC源码说明文档里面有说明代码范例:大文件(50G)上传的实现细节: 服务端接收文件数据的处理逻辑代码: 2.使用PECL扩展模块uploadprogress实现(http://pecl.php.net/package/uploadprogress)uploadprogress 模块实现方法:使用PECL模块安装方法安装该模块php.ini里面设置uploadprogress.file.filename_template=“/tmp/upd_%s.txt”代码范例:进度的处理逻辑比较简单,只是更新数据库中的数据就行了。不需要做其它的处理。客户端代码如下:服务端代码如下: 实现后的效果:强大的文件上传,能够轻...

PHP大文件分片上传断点续传实例源码

1.使用PHP的创始人RasmusLerdorf写的APC扩展模块来实现(http://pecl.php.net/package/apc)APC实现方法:安装APC,参照官方文档安装,可以使用PECL模块安装方法快速简捷,这里不说明配置php.ini,设置参数apc.rfc1867=1,使APC支持上传进度条功能,在APC源码说明文档里面有说明代码范例:大文件(50G)上传的实现细节: 服务端接收文件数据的处理逻辑代码: 2.使用PECL扩展模块uploadprogress实现(http://pecl.php.net/package/uploadprogress)uploadprogress 模块实现方法:使用PECL模块安装方法安装该模块php.ini里面设置uploadprogress.file.filename_template=“/tmp/upd_%s.txt”代码范例:进度的处理逻辑比较简单,只是更新数据库中的数据就行了。不需要做其它的处理。客户端代码如下:服务端代码如下: 实现后的效果:强大的文件夹上传,能够轻...

php+html5实现无刷新上传,大文件分片上传断点续传

核心原理: 该项目核心就是文件分块上传。前后端要高度配合,需要双方约定好一些数据,才能完成大文件分块,我们在项目中要重点解决的以下问题。* 如何分片;* 如何合成一个文件;* 中断了从哪个分片开始。如何分,利用强大的js库,来减轻我们的工作,市场上已经能有关于大文件分块的轮子,虽然程序员的天性曾迫使我重新造轮子。但是因为时间的关系还有工作的关系,我只能罢休了。最后我选择了百度的WebUploader来实现前端所需。如何合,在合之前,我们还得先解决一个问题,我们如何区分分块所属那个文件的。刚开始的时候,我是采用了前端生成了唯一uuid来做文件的标志,在每个分片请求上带上。不过后来在做秒传的时候我放弃了,采用了Md5来维护分块和文件关系。在服务端合并文件,和记录分块的问题,在这方面其实行业已经给了很好的解决方案了。参考迅雷,你会发现,每次下载中的时候,都会有两个文件,一个文件主体,另外一个就是文件临时文件,临时文件存储着每个分块对应字节位的状态。这些都是需要前后端密切联系才能做好,前端需要根据固定大小对文件进行分片,并且请求中要带上分片序号和大小。前...
首页上一页...583584585586587...下一页尾页