如何使用一个HTTP请求下载多个文件?

如何使用一个HTTP请求下载多个文件?,http,browser,multipart,Http,Browser,Multipart,用例:用户点击网页上的链接-轰!在他的文件夹中加载文件。 我尝试使用打包文件,但它似乎只适用于Firefox 我的回答是这样的: HTTP/1.0 200 OK Connection: close Date: Wed, 24 Jun 2009 23:41:40 GMT Content-Type: multipart/mixed;boundary=AMZ90RFX875LKMFasdf09DDFF3 Client-Date: Wed, 24 Jun 2009 23:41:40 GMT Client

用例:用户点击网页上的链接-轰!在他的文件夹中加载文件。
我尝试使用打包文件,但它似乎只适用于Firefox

我的回答是这样的:

HTTP/1.0 200 OK
Connection: close
Date: Wed, 24 Jun 2009 23:41:40 GMT
Content-Type: multipart/mixed;boundary=AMZ90RFX875LKMFasdf09DDFF3
Client-Date: Wed, 24 Jun 2009 23:41:40 GMT
Client-Peer: 127.0.0.1:3000
Client-Response-Num: 1
MIME-Version: 1.0
Status: 200

--AMZ90RFX875LKMFasdf09DDFF3 
Content-type: image/jpeg 
Content-transfer-encoding: binary 
Content-disposition: attachment; filename="001.jpg" 

<< here goes binary data >>--AMZ90RFX875LKMFasdf09DDFF3 
Content-type: image/jpeg 
Content-transfer-encoding: binary 
Content-disposition: attachment; filename="002.jpg" 

<< here goes binary data >>--AMZ90RFX875LKMFasdf09DDFF3 
--AMZ90RFX875LKMFasdf09DDFF3--
HTTP/1.0 200正常
连接:关闭
日期:2009年6月24日星期三23:41:40 GMT
内容类型:多部分/混合;边界=AMZ90RFX875LKMFasdf09DDFF3
客户日期:2009年6月24日星期三23:41:40 GMT
客户端对等机:127.0.0.1:3000
客户端响应编号:1
MIME版本:1.0
现状:200
--AMZ90RFX875LKMFasdf09DDFF3
内容类型:图像/jpeg
内容传输编码:二进制
内容处置:附件;filename=“001.jpg”
>--AMZ90RFX875LKMFasdf09DDFF3
内容类型:图像/jpeg
内容传输编码:二进制
内容处置:附件;filename=“002.jpg”
>--AMZ90RFX875LKMFasdf09DDFF3
--AMZ90RFX875LKMFasdf09DDFF3--
谢谢你


注意:不,压缩文件不是一个选项

压缩是在所有浏览器上都有一致结果的唯一选项。如果因为您不知道拉链可以动态生成而不是一个选项,那么它们可以。如果这不是一个选项,因为你对zip文件怀恨在心,那么

MIME/multipart用于电子邮件和/或到HTTP服务器的后期传输。它从未打算在HTTP事务的客户端接收和解析。有些浏览器确实实现了它,有些则没有


作为另一种选择,您可以使用JavaScript脚本打开窗口下载各个文件。或者一个Java小程序(如果是企业应用程序,则需要在机器上运行Java运行时,这应该不是问题[因为NetAdmin可以在工作站上部署它]),它将下载用户选择的目录中的文件。

记得10年前在netscape 4天中这样做过吗。它使用了和你的浏览器一样的边界,在当时根本不适用于其他浏览器


虽然它不能回答您的问题,但HTTP 1.1支持请求管道,以便至少可以重复使用相同的TCP连接来下载多个图像。

您可以使用base64编码将一个(非常小的)图像嵌入HTML文档,但是从浏览器/服务器的角度来看,您在技术上仍然只发送一个文档。也许这就是你想要做的


编辑:我刚刚意识到我在谷歌搜索中找到的大多数方法只支持firefox,而不支持iE。

这是实际的反应吗?或者,您是否删除了每个附件的内容长度之类的内容?如果这不起作用,我或多或少地认为这在当前一代的web浏览器上是做不到的。这样做的目的是什么?也许有更好的方法…事实上,现在我正在查看RFC,甚至可能不需要内容长度。我发现一篇文章似乎解决了同样的问题。还没试过:@Martin,他说的是下载,不是上传。你发布的链接是关于上传的。干杯。压缩不是一个选项,因为要求用户在下载后不要执行额外的操作。您关于多部分消息不用于HTTP传输的说法毫无意义。例如,使用多部分/表单数据上载多个文件。我看不出有任何理由禁止二进制文件使用多部分消息downloads@zakovyrya当前位置让我重新表述最后一句话。多部分消息从来都不是要在HTTP事务的客户端接收和解析的。@Einstein:我没有使用我的原始语句,因为我假设人们知道多部分/混合数据和多部分/表单数据之间的区别。同样,multipart/*从未打算在HTTP事务的客户端接收和解析。它是在文件上传过程中在客户端创建的,在服务器端接收并解析。对不起,您的评论是在我发送我的评论后才出现的。也许这不是W3C/IETF认可的东西,但我确实记得十多年前我自己也这么做过。当时它是“服务器端推送”的一部分,我同意,唯一的方法是动态创建一个zip文件并发送给用户。数据URI现在得到了很好的支持(),但它们对这个问题没有帮助。