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())
    );
}

但一方面需要引入测试依赖,另一方面将测试类用于实际开发场景总觉得怪怪的。

posted @ 2025-11-01 21:18  天航星  阅读(16)  评论(0)    收藏  举报