Spring Boot 接口返回文件流

为什么浏览器中有些文件点击后是预览,有些是下载:https://www.cnblogs.com/vipsoft/p/18267174

SpringBoot 接口输出文件流 & Vue 下载文件流,获取 Header 中的文件名 https://www.cnblogs.com/vipsoft/p/16662762.html

import org.springframework.core.io.FileSystemResource;
import org.springframework.core.io.Resource; 
import org.springframework.http.HttpHeaders;
import org.springframework.http.MediaType;
import org.springframework.http.ContentDisposition;


@RequestMapping("/download")
public ResponseEntity<Resource> download(HttpServletRequest request, @RequestBody QueryBHDownLoadFileVo param) {
    String path = "D:\\VipSoft.xlsx";
    String contentDisposition = ContentDisposition
            .builder("attachment")
            .filename(path)
            .build().toString();

    File file = new File(path);
    if (file.exists()) {
        return ResponseEntity.ok()
                .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition)
                .contentType(MediaType.APPLICATION_OCTET_STREAM)
                .body(new FileSystemResource(path));
    } else {
        return ResponseEntity.badRequest()
                .header(HttpHeaders.CONTENT_DISPOSITION, contentDisposition + " Not Found")
                .contentType(MediaType.APPLICATION_OCTET_STREAM)
                .body(null);
    }

}

 

posted @ 2022-05-27 16:09  VipSoft  阅读(4230)  评论(0编辑  收藏  举报