尝试使用编码和字符集
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);
但似乎并非全部有效
答案 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();
}
}
编辑:这对我有用