首页 新闻 搜索 专区 学院

如何理解断点续传

0
悬赏园豆:30 [已解决问题] 解决于 2016-12-05 10:38

后台自己写了一个简单的generic handler,用来下载文件。

可以看到只是简单地回传字节流,并没有实现断点续传。

我在chrome中测试,在下载过程中 暂停|继续,依旧正常下载。

问题:


1. 断点续传的应用场景 ?

2. 在我的测试中,暂停|继续 是否属于断点续传 ?

3. 断点续传中 每次暂停后继续,是否都应该发起一次新的请求,这些请求如何捕获 ?

4. 如何本例属于断点续传,难道客户端和服务端不用打配合 ?光光客户端就能搞定 ?

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Service.Excel;
using System.Net;

namespace Demo.Excel.Web
{
    /// <summary>
    /// Summary description for ExcelHandler
    /// </summary>
    public class ExcelHandler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            byte[] fileBytes = new byte[0];
            System.IO.FileStream fs = System.IO.File.Open(@"\\scanning-pc\PortArthur\WindowsXPMode_en-us.zip", System.IO.FileMode.Open, System.IO.FileAccess.ReadWrite);
            fileBytes = new byte[(int)fs.Length];
            fs.Read(fileBytes, 0, fileBytes.Length);
            string aFileName = "test.zip";
            context.Response.AddHeader("content-disposition", "attachment;filename=" + aFileName);
            context.Response.ContentType = "application/octet-stream";
            context.Response.BinaryWrite(fileBytes);
            fs.Close();

            context.Response.End();
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }
}


 

 

嘻哈烧饼的主页 嘻哈烧饼 | 初学一级 | 园豆:173
提问于:2016-12-02 17:19
< >
分享
最佳答案
0

你这就是普通下载写法,同意一楼的讲解,我也给你回复了。
http://www.cnblogs.com/CreateMyself/p/6063646.html#3571051


收获园豆:20
Jeffcky | 老鸟四级 |园豆:2563 | 2016-12-02 20:16

谢谢

嘻哈烧饼 | 园豆:173 (初学一级) | 2016-12-05 10:38
其他回答(2)
0

大文件下载需要断点续传吧,早期为了充分利用带宽,当第一次请求获得文件长度后会起若干线程分别指明下载的range进行下载,最后把各线程下载的合并为完整文件。

就你的代码而言不是断点续传,客户端应该会在请求中包含一个range,指明我要哪部分,服务端会给一个acceptrange(记不太清楚了,最好你去查下)告知客户端我响应你的数据是哪个部分(和客户端请求范围对应)

每次断点续传都是一次新的请求,比如你的就是一次新的http请求。这些请求应该可以通过chrome的f12看到吧。

另,虽然你的代码不是断点续传的写法,但chrome如何做到断点续传的不太清楚,可能只是没有给服务端响应,服务端也只能傻傻的等着(不确定,可能是错的)

 

另2:你的代码这样写有问题,一次加载400多M的文件到内存这个对服务器影响太大了,你应该是按流的方式读一些flush一些。

收获园豆:10
Daniel Cai | 园豆:10374 (专家六级) | 2016-12-02 17:43

多谢提点

支持(0) 反对(0) 嘻哈烧饼 | 园豆:173 (初学一级) | 2016-12-05 10:38
0

1、断点续传功能,既可节约时间又可以节约金钱。
2、定时下载功能,可以为将要下载的软件制定一任务列表,让下载软件在规定的时间自动拨号上网并下载软件,下载完毕后再自动挂起Modem,断开与internet的连接,甚至自动关闭计算机。
3、多文件同时下载。
4、支持拖放式操作,可将下载文件的URL超链接用鼠标拖放到下载软件的窗口上,即可激活下载软件,同时开始文件的下载。
5、自动捕捉剪贴板上的URL并激活下载软件,可以捕捉到剪贴板中的URL,甚至浏览器中单击下载文件超链接,即可激活程序实现文件的下载。
6、致命错误发生时的关闭机制。
7、预防病毒侵害的安全机制,文件下载完毕,即可自动将其发送到指定的病毒的检测软件进行病毒扫描。
断点续传下载软件包括Thunder、NetAnts、FlashGet、Net Vampire、Download Manager、GetRight、Go!Zilla、WinDownload等。

在北京浪迹天涯 | 园豆:22 (初学一级) | 2016-12-03 08:37
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册