原代码:
multipartFile = new MockMultipartFile(originFileName, inputStream);
现象:

在 Java 中,MockMultipartFile 是 Spring Framework 测试模块中的一个工具类,它用于在测试环境中模拟 MultipartFile 对象
解决:
使用 CommonsMultipartFile:
// File 转 MultipartFile
private MultipartFile createMultipartFile(String filePath, InputStream inputStream) throws IOException {
// 创建临时文件
int lastIndexOf = filePath.lastIndexOf(".");
if (lastIndexOf > 0) {
filePath = filePath.substring(0, lastIndexOf);
}
filePath = filePath.substring(filePath.lastIndexOf(File.separator) + 1);
File tempFile = File.createTempFile("upload_", "_" + filePath);
logger.info("tempFile: " + tempFile.getAbsolutePath());
tempFile.deleteOnExit(); // 确保程序退出时删除临时文件
// 将输入流写入临时文件
try (FileOutputStream outputStream = new FileOutputStream(tempFile)) {
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, bytesRead);
}
}
// 使用 DiskFileItem 创建 MultipartFile
FileItemFactory factory = new DiskFileItemFactory();
String textFieldName = "file";
FileItem item = factory.createItem(textFieldName, "application/octet-stream", false, filePath);
try (InputStream tempInputStream = new FileInputStream(tempFile);
OutputStream os = item.getOutputStream()) {
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = tempInputStream.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
}
return new CommonsMultipartFile(item);
}
5729

被折叠的 条评论
为什么被折叠?



