提供文件时未正确获取文件扩展名

时间:2019-07-30 19:17:45

标签: java spring model-view-controller download

我有一个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编辑器(在这种情况下)打开,但是如果我下载文件,它将没有扩展名,并且我将拥有手动添加扩展名。为什么会这样?

1 个答案:

答案 0 :(得分:0)

发现问题,我的文件名包含无法解析的空格,因此,如果我的文件名为“ mathexes.pdf”,则当我下载文件时,文件名将为“ math”。

灵魂在于使用转义引号将文件名括起来,如下所示:

headers.set("Content-Disposition", "attachment; filename=\"" + name + "\"");