我正在从控制器下载文件。这是行不通的。这是因为文件名中的“,”。如果我从名称中删除“,”它将起作用。对此有任何解决方法吗?我应该做String.replace(“,”“”)。必须有更好的方法吗?
response.setHeader("Content-Disposition", "inline; filename=" + "abbbbababbaababba.4.1.2013,aakdfhfdf.xlsx");
完整方法
@RequestMapping(value = "/newsimage/{newsImageId} ", method = RequestMethod.GET)
public void getImage(HttpServletRequest request, HttpServletResponse response, @PathVariable long newsImageId) {
NewsImage newsImage = newsImageService.findById(newsImageId);
String fileName = newsImage.getFileName();
response.setHeader("Content-Disposition", "inline; filename=" + "abbbbababbaababba.4.1.2013,aakdfhfdf.xlsx");
response.setContentType(newsImage.getContentType());
// response.setHeader("Content-Disposition", "attachment;filename=" + newsImage.getFileName());
OutputStream out;
try {
out = response.getOutputStream();
out.write(newsImage.getData());
out.flush();
} catch (IOException e) {
logger.error(e.getMessage());
}
}
答案 0 :(得分:6)
您需要引用文件名,否则它将被解释为标题属性的一部分。
response.setHeader("Content-Disposition",
"inline; filename=\"" + "abbbbababbaababba.4.1.2013,aakdfhfdf.xlsx" + "\"");
答案 1 :(得分:2)
有reserved characters and words但是','不是其中之一。我仍然不会使用','(替换为' - ')。还有,'。'不应该用于后缀以外的任何内容。
如果你真的真的想使用','你应该引用整个文件名,而不是因为操作系统(或文件系统)限制,而是因为HTTP标题。