强制浏览器使用部分内容下载大文件

时间:2018-06-12 05:11:10

标签: http download fileserver

我的服务器托管要下载的大文件(这些文件可能存储在不同的文件服务器中,但不能存储在Web服务器中)。我的目的是让浏览器使用部分下载,以便Web服务器可以获取文件的一小部分而不是整个文件。

但是浏览器(chrome 66)发送了第一个没有Range的HTTP GET请求。所以我必须回复Status: 200 OK

请求:

GET http://fakefile/falke HTTP/1.1
Host: fakefile
Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9

回应路径#1:

HTTP/1.1 200 OK
Date: Tue, 12 Jun 2018 04:58:58 GMT
Content-Type: text/plain
Content-Length: 8205926
Connection: keep-alive
Content-Range: bytes 0-1048575/8205926
Content-Disposition: attachment; filename="301050.11051.input.txt"
Accept-Ranges: bytes

Content-Length是整个文件大小,Content-Range是块大小。

结果:浏览器认为chunk是整个文件,不再有HTTP范围请求。

回应第2道:

HTTP/1.1 206 Partial Content
Date: Tue, 12 Jun 2018 04:58:58 GMT
Content-Type: text/plain
Content-Length: 1048576
Connection: keep-alive
Content-Range: bytes 0-1048575/8205926
Content-Disposition: attachment; filename="301050.11051.input.txt"
Accept-Ranges: bytes

Content-Length是块大小,Content-Range是块大小。

结果:浏览器告知文件未下载。

问题:

如何响应发送大文件的第一个块的请求。浏览器可以使用部分内容自动下载剩余的块。

0 个答案:

没有答案