为了账号安全,请及时绑定邮箱和手机立即绑定

Spring boot中下载文件名称中文变___________下划线了,请问如何处理?

@GetMapping("/download")
@ResponseBody
public ResponseEntity serveFile(@RequestParam String filename) throws IOException{
    filename=new String(filename.getBytes(),"utf-8");//有没有这句话
    Resource file=new FileSystemResource("D:\\workspace\\idea_me\\demo\\upload-dir"+File.separator+ filename);
    HttpHeaders headers = new HttpHeaders();
    headers.add("Cache-Control", "no-cache, no-store, must-revalidate");
    headers.add("Content-Disposition", String.format("attachment; filename=\"%s\"", file.getFilename()));
    headers.add("Pragma", "no-cache");
    headers.add("Expires", "0");
    return ResponseEntity
            .ok()
            .headers(headers)
            .contentLength(file.contentLength())
            .contentType(MediaType.parseMediaType("application/octet-stream;charset=utf-8"))
            .body(new InputStreamResource(file.getInputStream()));
}


https://img1.sycdn.imooc.com//5ab49ffc0001db3113660744.jpg

https://img1.sycdn.imooc.com//5ab49ffc0001ee0d13660697.jpg

正在回答

4 回答

file.getFilename()

改为

URLEncoder.encode(file.getFilename(), "utf-8")


0 回复 有任何疑惑可以回复我~

解决了吗? 我也遇到了这个问题

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

Spring boot中下载文件名称中文变___________下划线了,请问如何处理?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信