response.setContentType("APPLICATION/OCTET-STREAM")

Posted

技术标签:

【中文标题】response.setContentType("APPLICATION/OCTET-STREAM")【英文标题】: 【发布时间】:2014-06-08 18:25:44 【问题描述】:

我有一个非常基本的问题:

我正在编写代码以使用 JSP 和 Servlet 下载 CSV 文件。我从互联网论坛获得了代码,它运行良好,但我试图理解以下两行的重要性

response.setContentType("APPLICATION/OCTET-STREAM");
response.setHeader("Content-Disposition", "attachment; filename=\""
            + filename + "\"");

现在第一行response.setContentType - 根据我的理解,它告诉浏览器需要从服务器获得什么样的数据。我的问题是它告诉浏览器价值application/octet-stream。我看到这被用于下载各种文件。如果此行通知浏览器该页面将下载文件,下一行会导致什么不同response.setHeader 将附件作为参数。

谁能告诉我这两行文件下载的意义吗?

问候塔伦

【问题讨论】:

【参考方案1】:

第一行描述数据类型。

response.setContentType("APPLICATION/OCTET-STREAM");

APPLICATION/OCTET-STREAM 代表二进制数据。通过指定实际的文件类型可能更精确。对于图像,它可以是image/png。如果浏览器知道确切的文件类型,它可能会直接显示该文件。

response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");

这表示“甚至不要尝试显示文件,只需保存文件。”它还建议一个文件名。

更新 ***对 mime-types 和 content-disposition 有更好的解释:

http://en.wikipedia.org/wiki/MIME#Content-Disposition

【讨论】:

哇 精彩的解释,简短而准确。谢谢

以上是关于response.setContentType("APPLICATION/OCTET-STREAM")的主要内容,如果未能解决你的问题,请参考以下文章

response.setContentType()的String参数及对应类型

response.setContentType()的作用及参数

response.setContentType与 request.setCharacterEncoding 区别

response.setContentType与 request.setCharacterEncoding 区别

response.setcontenttype的參数

servlet 中“response.setContentType("text/html")”的用途是啥