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>

 导入上传图片的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";
}

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值