我是否需要从Content-Type:application / octet-stream处下载文件?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (1819)

http标准

如果[Content-Disposition:attachment]用于application / octet-stream内容类型的响应中,暗示的建议是用户代理不应显示响应,而是在对话框里直接输入`save response as ...'

Content-Type: application/octet-stream
Content-Disposition: attachment

但我觉得Content-Type应该要改为application/pdf或者是image/png

如果我想要在浏览器下载文件的话,我的代码是否应该存在Content-Type: application/octet-stream

提问于
用户回答回答于

应用程序/八位字节流在RFC 2046中被定义为“任意二进制数据”,并且这里有一个明确的重叠,它适用于其唯一预期目的被保存到磁盘的实体”。唯一可以安全地使用application / octet-stream的方法是将其保存到文件中,并希望其他人知道它的用途。

你可以将Content-Disposition与其他内容类型(如image / png甚至text / html)结合使用, 有些旧时浏览器在text / html的情况下会忽略它

RFC 2616也提到了扩展令牌的可能性,而且现在大多数浏览器都认可内联,意味着如果可能的话,你确实希望显示实体(浏览器显示类型)。这当然是默认的行为,但它意味着你可以包含标题的文件名部分,如果用户尝试保存的话,可以做出哪些浏览器被使用的建议(文件扩展名符合所讨论的内容类型的本地系统规范 )。

因此:

Content-Type: application/octet-stream
Content-Disposition: attachment; filename="picture.png"

表示“我不清楚代码内容,请把其保存为一个文件,最好命名为picture.png”。

Content-Type: image/png
Content-Disposition: attachment; filename="picture.png"

表示“这是一个PNG图像,请将其保存为一个文件,最好命名为picture.png”。

Content-Type: image/png
Content-Disposition: inline; filename="picture.png"

表示“这是一个PNG图像,除非你不知道如何显示PNG图像,否则请显示它,如果用户选择保存它,我们建议文件名保存为picture.png”。

在识别内联的浏览器中,有些人会使用这个方法,但其他人会在用户选择“保存链接为”时才会使用,而不是在浏览时直接选择“保存”。

扫码关注云+社区