以下java代码用于通过Web应用程序下载请求的日志文件:
protected HttpServletResponse response;
....
response.setContentType("application/octet-stream");
String filename = OrgName + ".log";
response.setHeader("Content-Disposition", "attachment; filename= " + filename);
OutputStream os = response.getOutputStream();
os.write(getFile());
os.close();
当OrgName
包含像“Xyz Pvt Ltd”这样的空间时出现问题,在这种情况下,文件将下载名称为“Xyz”而不是“Xyz Pvt Ltd.log”。第一个空格后的名称部分被忽略了。请注意,文件正确下载,只是名称没有正确显示。有什么我做错了吗?或者这是一种标准行为吗?
环境: Struts 2,Jboss 5.1.0,Mozilla Firefox 3.5.3
答案 0 :(得分:14)
我想我发现了你的问题。只需将文件名字符串设置为引用
即可response.setHeader("Content-Disposition","attachment; filename=\"" + filename + "\"");
这可以解决您的问题。
答案 1 :(得分:0)
我认为您必须使用空格编码您可以查看apache base64编码器,我记得空格被编码为%20%,因此在解码时您可以使用空格检索文件名。