54

用例:用户点击网页上的链接 - 砰!加载他的文件夹中的文件。
我尝试使用multipart/mixed message打包文件,但它似乎只适用于 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--

谢谢

PS 不,压缩文件不是一个选项

4

5 回答 5

45

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

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

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

于 2009-06-25T00:16:39.640 回答
1

记得 > 10 年前在 netscape 中执行此操作 4 天。它使用了像您所做的那样的边界,并且当时根本不适用于其他浏览器。

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

于 2009-06-25T00:54:16.803 回答
-1

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

使用 Base64 将图像嵌入 HTML

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

于 2009-06-25T01:43:56.687 回答
-1

您可以制作一个包含多个数据 url 的 json。

例如:

{
    "stamp.png": "data:image/png;base64,...",
    "document.pdf": "data:application/pdf;base64,..."
}
于 2021-08-04T05:46:39.083 回答
-1

(扩展trinalbadger587的答案

您可以返回一个带有多个可点击、可下载、就地数据链接的 html:

<html>
<body>
  <a download="yourCoolFilename.png" href="data:image/png;base64,...">PNG</a>
  <a download="theFileGetsSavedWithThisName.pdf" href="data:application/pdf;base64,...">PDF</a>
</body>
</html>
于 2021-12-14T09:14:45.310 回答