Java中将File转化为MultipartFile的操作

 更新时间:2020年10月10日 14:27:23   作者:hui008  
这篇文章主要介绍了Java中将File转化为MultipartFile的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

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的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java 异常被catch后 将会继续执行的操作

    java 异常被catch后 将会继续执行的操作

    这篇文章主要介绍了java 异常被catch后 将会继续执行的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • SpringBoot应用的打包和发布实现

    SpringBoot应用的打包和发布实现

    本文主要介绍了SpringBoot应用的打包和发布实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • SpringCloud创建多模块项目的实现示例

    SpringCloud创建多模块项目的实现示例

    ,Spring Cloud作为一个强大的微服务框架,提供了丰富的功能和组件,本文主要介绍了SpringCloud创建多模块项目的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • SpringMVC中@ModelAttribute注解的使用教程

    SpringMVC中@ModelAttribute注解的使用教程

    在SpringMVC中,我们可以通过使用@ModelAttribute注解标记方法,实现类似于Struts2中Preparable拦截器的效果,这篇文章主要给大家介绍了关于SpringMVC中@ModelAttribute注解使用的相关资料,需要的朋友可以参考下
    2021-08-08
  • mybatis 查询sql中in条件用法详解(foreach)

    mybatis 查询sql中in条件用法详解(foreach)

    这篇文章主要介绍了mybatis 查询sql中in条件用法详解(foreach),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02
  • Java开发如何把数据库里的未付款订单改成已付款

    Java开发如何把数据库里的未付款订单改成已付款

    这篇文章主要介绍了Java开发如何把数据库里的未付款订单改成已付款,先介绍MD5算法,简单的来说,MD5能把任意大小、长度的数据转换成固定长度的一串字符,实现思路非常简单需要的朋友可以参考下
    2022-11-11
  • Mybatis中Mapper映射文件使用详解

    Mybatis中Mapper映射文件使用详解

    这篇文章主要介绍了Mybatis中Mapper映射文件使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Java设计模式之工厂模式(Factory模式)介绍

    Java设计模式之工厂模式(Factory模式)介绍

    这篇文章主要介绍了Java设计模式之工厂模式(Factory模式)介绍,本文讲解了为何使用工厂模式、工厂方法、抽象工厂、Java工厂模式举例等内容,需要的朋友可以参考下
    2015-03-03
  • 一文带你看懂Android动画的实现原理

    一文带你看懂Android动画的实现原理

    动画是 Android 应用程序中重要的交互特性,ndroid 提供了多种动画效果,包括平移、缩放、旋转和透明度等,它们可以通过代码或 XML 来实现,本文将介绍 Android 动画的原理和实现方法,并提供一些示例,需要的朋友可以参考下
    2023-07-07
  • MyBatis中执行相关SQL语句的方法

    MyBatis中执行相关SQL语句的方法

    本文主要介绍了MyBatis中执行相关SQL语句的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08

最新评论