我有一个Spring MVC应用程序,用户可以请求文件。这是我提供文件的方式:
public HttpEntity<byte[]> getFile (byte [] archivoBytes, String name, String extension) {
HttpHeaders headers = new HttpHeaders();
headers.setContentType(new MediaType("application", extension));
headers.set("Content-Disposition", "attachment; filename=" + name);
headers.setContentLength(archivoBytes.length);
return new HttpEntity<>(archivoBytes, headers);
}
我的变量名正确,并且包含带有扩展名的文件名。但是,当我尝试下载文件时,如果我告诉firefox“以...打开”,我的文件将使用默认的pdf编辑器(在这种情况下)打开,但是如果我下载文件,它将没有扩展名,并且我将拥有手动添加扩展名。为什么会这样?
答案 0 :(得分:0)
发现问题,我的文件名包含无法解析的空格,因此,如果我的文件名为“ mathexes.pdf”,则当我下载文件时,文件名将为“ math”。
灵魂在于使用转义引号将文件名括起来,如下所示:
headers.set("Content-Disposition", "attachment; filename=\"" + name + "\"");