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}