下载文件时,文件扩展名的内容类型有所更改

时间:2018-08-15 07:15:16

标签: java spring spring-mvc spring-boot

我正在使用以下方法现在从服务器上下载一些扩展名为(.png“,”。txt“,”。pdf“)的文件,这些文件可以正确下载,但其中(” .exe “)文件正在下载,因为f.txt可能使我知道此代码出了什么问题。对于.exe文件,内容正在写入” f.txt“文件中。我还使用 Files.probeContentType(file.toPath()); 确定媒体类型并将其设置为respnse实体的内容类型。谢谢! :)。 扩展名更改为 application / x-msdownload

的媒体类型
        public ResponseEntity<InputStreamResource> getFileFromDisk(String filename) throws IOException {
            ResponseEntity<InputStreamResource> filedata = null;
            String file_path = "/e:/filesfolder/" + filename;
            String fileType = "Undetermined";
            final File file = new File(file_path);
            fileType = Files.probeContentType(file.toPath());
            System.out.println(fileType);
            InputStreamResource resource = new InputStreamResource(new FileInputStream(file_path));
            String file_checksum = checksumcalc.calculateChecksum(file_path);
            filedata = ResponseEntity.ok().header("Md5", file_checksum)
                    .contentType(MediaType.parseMediaType(fileType)).body(resource);
            return filedata;
        }

1 个答案:

答案 0 :(得分:2)

为避免出现f.txt问题,您必须定义Content-disposition标头以指定附件的文件名。

例如:

filedata = ResponseEntity.ok()
    .header("Content-disposition", "attachment; filename=" + fileName)
    .header("Md5", file_checksum)
    .contentType(MediaType.parseMediaType(fileType)).body(resource);