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 区别