Java 获取 MultipartFile
项目中有时候会需要调用别人的接口上传一个文件,别人的接口参数为 MultipartFile 类型,需要对 File 文件进行一个转换再进行上传。
这里整理了一个较为实用的方法:
public static MultipartFile ofMultipartFile(File file) {
FileItem fileItem = new DiskFileItemFactory().createItem(
"file",
MediaType.MULTIPART_FORM_DATA_VALUE,
true,
file.getName());
try (InputStream inputStream = Files.newInputStream(file.toPath());
OutputStream outputStream = fileItem.getOutputStream()) {
IOUtils.copy(inputStream, outputStream);
} catch (Exception e) {
throw new IllegalArgumentException(e.getMessage(), e);
}
return new CommonsMultipartFile(fileItem);
}
虽然用 MockMultipartFile 实现更简单,只需要:
public static MultipartFile ofMultipartFile(File file) throws Exception {
return new MockMultipartFile(
"file",
file.getName(),
MediaType.MULTIPART_FORM_DATA_VALUE,
Files.newInputStream(file.toPath())
);
}
但一方面需要引入测试依赖,另一方面将测试类用于实际开发场景总觉得怪怪的。
天河有尽后为涯 星海无边前作岸

浙公网安备 33010602011771号