001package top.cenze.utils.http.response; 002 003import cn.hutool.core.util.ObjectUtil; 004import lombok.SneakyThrows; 005import org.springframework.http.MediaType; 006import org.springframework.web.multipart.MultipartFile; 007 008import javax.servlet.ServletOutputStream; 009import javax.servlet.http.HttpServletResponse; 010import java.io.InputStream; 011 012/** 013 * @desc: 请求结果工具 014 * @author: chengze 015 * @createByDate: 2024/1/8 14:08 016 */ 017public class ResponseUtil { 018 019 /** 020 * 转文件流 021 * @param multipartFile 022 * @param response 023 */ 024 @SneakyThrows 025 public void toStream(MultipartFile multipartFile, HttpServletResponse response) { 026 if (ObjectUtil.isNull(multipartFile) || "".equals(multipartFile) || multipartFile.getSize() <= 0) { 027 throw new Exception("导出文件异常"); 028 } 029 030 // response.setContentType("application/vnd.ms-excel;charset=UTF-8"); 031 response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); 032 response.setHeader("Pragma", "no-cache"); 033 response.setHeader("Cache-Control", "no-cache"); 034 response.setDateHeader("Expires", 0); 035 036 ServletOutputStream outputStream = response.getOutputStream(); 037 byte[] buf = new byte[4096]; 038 int bytesRead; 039 InputStream inputStream = multipartFile.getInputStream(); 040 while ((bytesRead = inputStream.read(buf)) != -1) { 041 outputStream.write(buf, 0, bytesRead); 042 } 043 044 inputStream.close(); 045 outputStream.flush(); 046 outputStream.close(); 047 } 048}