File类型转MultipartFile类型

multipartfile是spring定义的一个接口,file是无法转换为multipartfile的。但是可以自己实现一个multipartfile具体类,在这个类中将file封装。

  • 此处截取一个multipartfile接口的实现类CommonsMultipartFile的部分代码及构造方法片段
    File类型转MultipartFile类型
    所以我们可用通过创建CommonsMultipartFile对象来转MultipartFile
  • maven依赖
<dependency>
	<groupId>commons-fileupload</groupId>
	<artifactId>commons-fileupload</artifactId>
	<version>1.3.1</version>
</dependency>
  • 方法
public  MultipartFile FileToMultipartFile(File oneFile) throws IOException
	{
		FileItem fileItem = new DiskFileItem("mainFile", Files.probeContentType(oneFile.toPath()), false, oneFile.getName(), (int) oneFile.length(), oneFile.getParentFile());
		InputStream input = null;
		OutputStream os = null;
		MultipartFile multipartFile = null;
		try {
			input = new FileInputStream(oneFile);
		    os = fileItem.getOutputStream();
		    IOUtils.copy(input, os);
		    multipartFile = new CommonsMultipartFile(fileItem);
		    input.close();
		    os.close();
		    return multipartFile;
		} catch (IOException ex) {
		     throw new RuntimeException();
		} finally {
            if(input != null){
                try {
                	input.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }  
            if(os != null){
            	try {
            		os.close();
            	} catch (IOException e) {
            		e.printStackTrace();
            	}
            }  
        }
	}

亲测可用,希望对大家有帮助。如有疑问,欢迎留言。

上一篇:文件上传inputstream转为multipartfile


下一篇:Spring Boot 2.x基础教程:多个文件的上传