package cn.iocoder.yudao.module.hrm.service.employee.contract; import org.springframework.web.multipart.MultipartFile; import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; /** * 字节数组版 MultipartFile:把内存中的字节包装成 MultipartFile, * 便于复用 system 的 SystemStorageBlobService.upload(...) 存储文件并拿到 blobId。 */ public class ByteArrayMultipartFile implements MultipartFile { private final String name; private final String originalFilename; private final String contentType; private final byte[] content; public ByteArrayMultipartFile(String name, String originalFilename, String contentType, byte[] content) { this.name = name; this.originalFilename = originalFilename; this.contentType = contentType; this.content = content == null ? new byte[0] : content; } @Override public String getName() { return name; } @Override public String getOriginalFilename() { return originalFilename; } @Override public String getContentType() { return contentType; } @Override public boolean isEmpty() { return content.length == 0; } @Override public long getSize() { return content.length; } @Override public byte[] getBytes() { return content; } @Override public InputStream getInputStream() { return new ByteArrayInputStream(content); } @Override public void transferTo(File dest) throws IOException { try (FileOutputStream fos = new FileOutputStream(dest)) { fos.write(content); } } }