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

6

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

我正在编写使用JSP和Servlets下载CSV文件的代码。 我从互联网论坛上得到了代码,并且它可以正常工作,但是我想要理解以下两行代码的重要性:

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

现在第一行response.setContentType——根据我的理解,它告诉浏览器期望从服务器获取什么类型的数据。我的问题是使用值application/octet-stream向浏览器传达了什么信息。我看到这被用来下载各种文件。如果这行代码告诉浏览器页面将下载一个文件,那么下一行会导致什么不同response.setHeader带有附件作为参数。

有人能告诉我这2行对于文件下载的重要性吗?

谢谢,Tarun

1个回答

8
第一行描述了数据类型。
response.setContentType("APPLICATION/OCTET-STREAM");

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

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

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

更新 维基百科上有关于MIME类型和内容协商的更好解释:

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


哇,讲解得非常清晰简洁。谢谢! - Tarun Bhatt

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接