package cn.cslg.pas.common.utils; import cn.cslg.pas.service.common.FileManagerService; import cn.hutool.core.util.IdUtil; import org.apache.commons.io.input.XmlStreamReaderException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.ByteArrayResource; import org.springframework.mock.web.MockMultipartFile; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InputStream; import java.lang.reflect.Method; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; /** * @Author xiexiang * @Date 2024/1/11 */ @Component public class ParseByteToFileUtils { @Autowired private FileManagerService fileManagerService; public static MultipartFile convertBytesToMultipartFile(byte[] fileData, String fileName) throws IOException { InputStream inputStream = new ByteArrayInputStream(fileData); MultipartFile multipartFile = new MockMultipartFile("file", fileName, "application/octet-stream", inputStream); return multipartFile; } public String uploadFile(byte[] fileData, Integer type) throws IOException { List multipartFiles = new ArrayList<>(); //保存生成地址 String fileName = ""; if (type.equals(1)) { fileName = IdUtil.simpleUUID() + ".xls"; } else if (type.equals(2)) { fileName = IdUtil.simpleUUID() + ".pdf"; } //文件原始名中的中文字符可能会乱码,对文件名进行URL编码 String encodedFileName = URLEncoder.encode(fileName, StandardCharsets.UTF_8.toString()); MultipartFile multipartFile = this.convertBytesToMultipartFile(fileData, encodedFileName); multipartFiles.add(multipartFile); List fileGuids = fileManagerService.uploadFileGetGuid(multipartFiles); String fileGuid = null; if (!fileGuids.isEmpty()) { fileGuid = fileGuids.get(0); } return fileGuid; } }