跳到主要内容
JackSparrow414
返回

Springmvc上传图片

本文导航

展开本文导航

正文

一直想着做一下图片的上传,今天做了一个超级简单版,里面只包括几个核心步骤。

图片上传表单设置 multipart/form-data 与 POST 并通过 JavaScript 提交

这里强调两点,form的enctype一定要为”multipart/form-data”,还有一点就是method要为post,如果不写method的话,在上传的时候会报服务器500错误,本人亲自踩坑发现的。

如果顺利进入controller其实核心步骤就如下几步:

这里注意:如果用的是MultipartFile可以不加@RequestParam注解,但是如果使用CommonsMultipartFile一定要加@RequestParam
public String uploadImage(HttpServletRequest request, @RequestParam("image")
CommonsMultipartFile image) throws IOException { //1.获取上传的文件的名字 String
name = image.getOriginalFilename();
//2.在服务器创建图片保存路径,这里保存在webapp/res/文件夹下 String path =
request.getSession().getServletContext().getRealPath("res/");
//3.在要保存的路径下新建file,这里创建file的方法是路径,名字 File file = new
File(path,name); //4.将图片复制到对应的路径下的file里 image.transferTo(file);
String after = path+name;
//获得文件存储路径可以存储到数据库里,而不是将图片存储到数据库里。 return after;
}

当然这是最最简陋的一个上传,各种校验和文件保存时候的校验都没有,可以自己拓展,多文件上传,就是把CommonsMultipartFile变为数组CommonsMultipartFile[]即可,然后可以循环上述操作即可。

2019-10-27更新:多图片上传时,如果直接使用CommonsMultipartFile[]接收,会报错,报错大致内容如下

"message":
"Failed to convert value of type 'java.util.LinkedList' to required type 'org.springframework.web.multipart.commons.CommonsMultipartFile[]'; nested exception is java.lang.IllegalStateException: Cannot convert value of type 'org.springframework.web.multipart.support.StandardMultipartHttpServletRequest$StandardMultipartFile' to required type 'org.springframework.web.multipart.commons.CommonsMultipartFile': no matching editors or conversion strategy found",

应该是默认转换不了,具体什么原因如果哪位大神知道,可以留言告诉下,不过使用MultipartFile[]则可以正常接收到

Springmvc的配置文件中别忘记加这一句:

<bean
  id="multipartResolver"
  class="org.springframework.web.multipart.commons.CommonsMultipartResolver"
>
  <property name="maxUploadSize" value="10000000" />
</bean>

pom文件中别忘了加:

<dependency>
  <groupId>commons-fileupload</groupId>
  <artifactId>commons-fileupload</artifactId>
  <version>1.3.1</version>
</dependency>

<dependency>
  <groupId>commons-io</groupId>
  <artifactId>commons-io</artifactId>
  <version>2.4</version>
</dependency>

至此,最最简陋的上传完成了。


分享本文:

上一篇
关于web项目的首页设置问题
下一篇
关于Java中基本类型和包装类

评论

欢迎提问、纠错和分享经验。发表评论需要登录 GitHub;中英文版本共享评论。

评论仅在正式网站开放。