Java中将File转化为MultipartFile的操作

时间:2021-05-20

话不多说直接上代码,简单明了

import java.io.File;import java.io.FileInputStream;import org.springframework.web.multipart.MultipartFile;import org.springframework.mock.web.MockMultipartFile;import org.apache.http.entity.ContentType; File pdfFile = new File("D://test.pdf");FileInputStream fileInputStream = new FileInputStream(pdfFile);MultipartFile multipartFile = new MockMultipartFile(pdfFile.getName(), pdfFile.getName(), ContentType.APPLICATION_OCTET_STREAM.toString(), fileInputStream);

不少网友反馈说要下jar包的依赖,如下

jar包依赖:

<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>4.4.9</version></dependency><dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>5.1.6.RELEASE</version></dependency>

补充知识:SPRING MVC文件上传功能关于不能实例化MultipartFile对象原因分析

实现文件上传有几个需要注意的地方

1、文件上传的HTML,需要在form中加入enctype="multipart/form-data"

2、在Spring的配置文件中需要指定org.springframework.web.multipart.commons.CommonsMultipartResolver。

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="defaultEncoding" value="UTF-8" /> <!-- 指定所上传文件的总大小,单位字节。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 --> <property name="maxUploadSize" value="10240000" /> </bean>

3、在我们执行文件上传方法的Controller类上面需要加入@RequestParam注解或在Spring的配置文件中加入<mvc:annotation-driven/>的配置

@RequestMapping("upload.do") public String upload(@RequestParam MultipartFile file) {<mvc:annotation-driven/>

如果在我们不加入@RequestParam注解且没有加入<mvc:annotation-driven/>注解的情况下,在执行文件上传时会报如下异常:

javax.servlet.ServletException: org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.web.multipart.MultipartFile]: Specified class is an interface at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146) at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132) at org.eclipse.jetty.server.Server.handle(Server.java:531) at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:352) at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:260) at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:281) at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:102) at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:118) at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:760) at org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:678) at java.lang.Thread.run(Thread.java:745)

注:个人比较建议在配置文件中加入annotation-driven用于打开注解驱动。这样我们在做文件上传时,就不需要在每个上传的文件对象上加入@RequestParam的注解了。

以上这篇Java中将File转化为MultipartFile的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

相关文章