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

标签 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 编辑器打开,但如果我下载该文件,它将没有扩展名,我将有手动添加扩展名。为什么会发生这种情况?

最佳答案

发现问题了,我的文件名包含无法解析的空格,所以如果我的文件名是“math exam.pdf”,当我下载该文件时,文件名将是“math”。

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

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

关于java - 提供文件时未正确获取文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57278670/

相关文章:

java - 为自定义按钮充气时发生 ClassNotFoundException(在手机上有效;在平板电脑上异常)

Spring Data JPA findAll(Iterable<ID> ids) 不允许重复的 id

java - 使用 @ResponseBody 和 spring 3 返回对象不起作用

c# - 注销按钮在 mvc 应用程序中不起作用

mysql - 带有 MySQL 的 Entity Framework 6 - 类库

java - 关于 EMR 错误 : Java heap space 的 Mahout

java - 组合表单和选择

java - 无 XML 的 Spring 3.1 未找到 HTTP 请求的映射

.net - 在 MVC 和 .NET 中使用 iText 7 生成供下载的 PDF

java - org.apache.tiles.template.NoSuchAttributeException : Attribute 'body' not found