我有一个 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 编辑器打开,但如果我下载该文件,它将没有扩展名,我将有手动添加扩展名。为什么会发生这种情况?
最佳答案
发现问题了,我的文件名包含无法解析的空格,所以如果我的文件名是“math exam.pdf”,当我下载该文件时,文件名将是“math”。
灵魂是使用转义引号将文件名括起来,如下所示:
headers.set("Content-Disposition", "attachment; filename=\"" + name + "\"");
关于java - 提供文件时未正确获取文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57278670/