springMVC------上传图片

需求

上传商品图片

Springmvc中对多部件类型解析

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

在springmvc.xml中配置multiparty类型解析器:

<!-- 文件上传解析器 -->

<bean id="multipartResolver"

    class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

    <!-- 设置上传文件的最大尺寸为5MB -->

    <property name="maxUploadSize">

        <value>5242880</value>

    </property>

</bean>

扫描二维码关注公众号,回复: 5644760 查看本文章

 导入上传图片的jar包

commons-fileupload-1.4.jar、commons-io-2.6.jar

创建图片虚拟目录,存储图片

双击服务器àmodulesàAdd External …

注意:在图片虚拟目录中,一定将图片目录分级创建(提高i/o性能),一般我们采用按日期(年、月、日)进行分级创建。

Jsp页面

<tr><td>商品图片</td>

    <td>

        <c:if test="${itemsList.pic!=null }">

            <img src="/pic/${itemsList.pic }" width="100" height="100" /><br/>

        </c:if>

        <input type="file" name="items_pic" />

    </td>

</tr>

在form表单属性中添加enctype="multipart/form-data"方可成功!

Controller方法

@RequestMapping("/editItemsSubmit")
public String editItemsSubmit(Model model, HttpServletRequest request, Integer id,
@ModelAttribute("itemsList") @Validated(value = { ValidGroup1.class }) ItemsCustom itemsCustom,
		BindingResult bindingResult,MultipartFile items_pic) throws Exception {
	// 获取校验错误信息
	… …
	//原始名称
	String originalFileName=items_pic.getOriginalFilename();
	//上传图片
	if(items_pic!=null && originalFileName!=null && originalFileName.length()>0){
		//存储图片的物理路径
		String pic_path="D:\\img\\";
		//新的图片名称
		String newFileName=UUID.randomUUID()+
originalFileName.substring(originalFileName.lastIndexOf("."));
		//新图片
		File newFile=new File(pic_path+newFileName);
		//将内存中的数据写入磁盘
		items_pic.transferTo(newFile);
		//将新图片名称写到itemsCustom中
		itemsCustom.setPic(newFileName);
	}
	
	itemsService.updateByPrimaryKeyWithBLOBs(id, itemsCustom);
	return "redirect:findItemsList.action";
}

猜你喜欢

转载自blog.csdn.net/qq_40802448/article/details/88656836