package com.boying.util; import com.boying.common.SystemConfigProperties; import com.boying.entity.FileInfo; import com.boying.entity.OrderRecord; import com.boying.service.FileInfoService; import com.boying.service.OrderRecordService; import lombok.AllArgsConstructor; import org.apache.commons.codec.binary.Base64; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; import org.springframework.web.multipart.MultipartFile; import java.io.*; import java.util.Objects; import java.util.UUID; @Component @AllArgsConstructor public class FileUtil { private static SystemConfigProperties systemConfigProperties; private static FileInfoService fileInfoService; private static OrderRecordService orderRecordService; public static String saveFile(MultipartFile multipartFile){ String filePath = systemConfigProperties.getFilePath(); File file = null; if(multipartFile.getSize() <= 0){ return null; }else { //文件原名称 String originalFilename = multipartFile.getOriginalFilename(); //文件格式 String substring = Objects.requireNonNull(originalFilename).substring(originalFilename.lastIndexOf(".")); //文件id String uuid = UUID.randomUUID().toString().trim().replaceAll("-", ""); //文件路径 file=new File(filePath+File.separator+uuid+substring); String absPath = null; try { absPath = file.getCanonicalPath(); String substring1 = absPath.substring(0, absPath.lastIndexOf(File.separator)); File file1 = new File(substring1); if(!file1.exists()){ file1.mkdirs(); } //写入 InputStream inputStream = multipartFile.getInputStream(); inputStreamToFile(inputStream,file); inputStream.close(); }catch (IOException e){ e.printStackTrace(); } return absPath; } } public static void inputStreamToFile(InputStream inputStream,File file){ try { OutputStream os = new FileOutputStream(file); int bytesRead = 0; byte[] buffer = new byte[8192]; while ((bytesRead = inputStream.read(buffer,0,8192)) != -1){ os.write(buffer,0,bytesRead); } os.close(); inputStream.close(); }catch (Exception e){ e.printStackTrace(); } } public static FileInfo generateBase64StringToFile(String fileString,int t,int type){ String lastname= null; //文件id String uuid = UUID.randomUUID().toString().trim().replaceAll("-", ""); if(t == 1){ lastname=".png"; }else { lastname=".pdf"; } String filePath = "D:\\FFproject\\file\\"; if(fileString == null){ return null; }else { try { byte[] b = Base64.decodeBase64(fileString); for (int i = 0; i < b.length; ++i) { if(b[i]<0){ b[i]+=256; } } OutputStream out = new FileOutputStream(filePath+uuid+lastname); out.write(b); FileInfo fileInfo = new FileInfo(); fileInfo.setFileBaseDir(filePath); fileInfo.setFileName(uuid); fileInfo.setFileLast(lastname); fileInfo.setType(type); out.flush(); out.close(); return fileInfo; }catch (Exception e){ e.printStackTrace(); return null; } } } }