14、SpringMVC上传图片

半城伤御伤魂 提交于 2019-12-04 07:33:20

springmvc中对多部件类型解析

在修改商品页面,添加上传商品图片功能。

在页面form中提交enctype="multipart/form-data"的数据时,需要springmvc对multipart类型的数据进行解析。

在springmvc.xml中配置multipart类型解析器。

<!-- 文件上传 -->
<bean id="multipartResolver"
      class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 设置上传文件的最大尺寸为5MB -->
    <property name="maxUploadSize">
        <value>5242880</value>
    </property>
</bean>

加入上传图片的jar

添加依赖

<!-- 文件上传 -->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

依赖树

[INFO] \- commons-fileupload:commons-fileupload:jar:1.3.1:compile
[INFO]    \- commons-io:commons-io:jar:2.2:compile

可以看到,其实还间接依赖了commons-io:commons-io:jar

上传图片代码

  • 页面
<tr>
	<td>商品图片</td>
	<td>
		<c:if test="${items.pic !=null}">
			<img src="/pic/${items.pic}" width=100 height=100/>
			<br/>
		</c:if>
		<input type="file" name="items_pic"/>
	</td>
</tr>
  • controller方法

修改:商品修改controller方法:

@RequestMapping("/editItemsSubmit")
public String editItemsSubmit(ItemsCustom itemsCustom, MultipartFile items_pic) throws Exception {

    //原始名称
    String originalFilename = items_pic.getOriginalFilename();
    //上传图片
    if (items_pic != null && originalFilename != null && originalFilename.length() > 0) {
        //存储图片的物理路径
        String pic_path = "D:\\tmp\\";
        //新的图片名称
        String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));
        //新图片
        File newFile = new File(pic_path + newFileName);
        //将内存中的数据写入磁盘
        items_pic.transferTo(newFile);
        //将新图片名称写到itemsCustom中
        itemsCustom.setPic(newFileName);
    }
}
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!