java下载文件的文件名始终为“ download”

时间:2018-12-26 07:05:33

标签: java

尝试使用编码和字符集

ByteArrayOutputStream bos = new ByteArrayOutputStream();
        Resource resource = new InputStreamResource(new ByteArrayInputStream(bos.toByteArray()));
        fileName = URLEncoder.encode(fileName + ".xlsx", "UTF-8");
        return ResponseEntity.ok()
                .header("Content-Disposition", "attachment; filename=" + fileName)
                .contentType(MediaType.parseMediaType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet ; charset=UTF-8"))
                .body(resource);

但似乎并非全部有效

--------------------------------更新回复信息 enter image description here

2 个答案:

答案 0 :(得分:1)

用于指定命名附件的Content-Disposition标头必须具有格式

Content-Disposition: attachment; filename="file.extension"

您的代码正在生成

Content-Disposition: attachment; filename=file.extension

无论您使用哪种浏览器/客户端,都无法理解第二部分,因此默认为“下载”。

答案 1 :(得分:0)

希望这可能会有所帮助 File file = new File(this.getClass().getClassLoader().getResource("application.properties").toURI()); if (file.exists()) { response.setContentType("application/pdf"); response.addHeader("Content-Disposition", "attachment; filename=" + file.getName()); try { Files.copy(Paths.get(file.toURI()), response.getOutputStream()); response.getOutputStream().flush(); } catch (IOException ex) { ex.printStackTrace(); } }

编辑:这对我有用