我正在使用一个简单的servlet,它将数据库中的文档内容作为字节数组发回.我想设置一个内容类型,以便在通过doGet()调用检索时具有适当的扩展名.
我确实将文档的类型存储为数据库中的元数据(例如png,gif,png,xls,docx ...).
Bal*_*usC 12
我应该将什么设置为内容类型以便保留文件扩展名?
用于ServletContext#getMimeType()根据文件名获取mime类型.
String mimeType = getServletContext().getMimeType(filename);
Run Code Online (Sandbox Code Playgroud)
servletcontainer通常已经提供了自己的默认mime类型映射web.xml.如果你想覆盖或添加其他一些,那么把它作为新的mime映射在webapp中web.xml.例如
<mime-mapping>
<extension>docx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.wordprocessingml.document</mime-type>
</mime-mapping>
<mime-mapping>
<extension>xlsx</extension>
<mime-type>application/vnd.openxmlformats-officedocument.spreadsheetml.sheet</mime-type>
</mime-mapping>
Run Code Online (Sandbox Code Playgroud)
最后将其设置为Content-Type响应头:
response.setContentType(mimeType);
Run Code Online (Sandbox Code Playgroud)
下载的文件名为"doc",如何在servlet上设置要下载的数据的文件名.
将其添加到servlet URL,因为某些浏览器(如MSIE)会忽略filename内容处置的属性.
<a href="download/filename.ext">download filename.ext</a>
Run Code Online (Sandbox Code Playgroud)
如果servlet映射到URL模式/download/*,那么您可以按如下方式获取它
String filename = request.getPathInfo().substring(1);
Run Code Online (Sandbox Code Playgroud)
最后将它设置在Content-Disposition标题中以使普通浏览器感到高兴:
response.setHeader("Content-Disposition", "attachment; filename=\"" + filename + "\"");
Run Code Online (Sandbox Code Playgroud)
如果您不在DB中存储文件名,而是存储ID或其他内容,则将其用作文件名.
<a href="download/${file.id}.${file.ext}">download ${file.id}.${file.ext}</a>
Run Code Online (Sandbox Code Playgroud)
然后在servlet中
String filename = request.getPathInfo().substring(1);
String id = filename.split("\\.")[0];
// Obtain from DB based on id.
Run Code Online (Sandbox Code Playgroud)
- 我应该将什么设置为内容类型以便保留文件扩展名?
您可以使用响应对象的setContentType方法来设置mime.例如:
response.setContentType("your-correct-mime-here");
Run Code Online (Sandbox Code Playgroud)
2.文件下载名称为"doc",如何在servlet上设置要下载的数据的文件名
您可以通过设置正确的标头来设置要下载的文件的文件名.您可以使用Content-Disposition,如下所示:
response.setHeader("Content-Disposition", "attachment; filename=\"" + your_file_name + "\"");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25343 次 |
| 最近记录: |