文件上传#
1.配置
在spring mvc的配置文件中配置文件上传的Bean
<!-- 文件上传 -->
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 设置上传文件的最大尺寸为5MB -->
<property name="maxUploadSize">
<value>5242880</value>
</property>
</bean>
增加文件上传的jar包。commons-fileupload-1.2.2.jar、commons-io-2.4.jar
2.结构
1.前台页面
表单增加 enctype="multipart/form-data"
表单增加文件上传标签
<input type="file" name="items_pic"/>
<form id="itemForm" action="" method="post" enctype="multipart/form-data">
<input type="file" name="items_pic"/>
</form>
2.后台代码
Controller方法参加图片参数
MultipartFile items_pic//接收商品图片
注意:参数名要与前台的参数名一致。
@RequestMapping("/editItemsSubmit")
public String editItemsSubmit(MultipartFile items_pic) throws Exception {
//原始名称
String originalFilename = items_pic.getOriginalFilename();
//上传图片
if(items_pic!=null && originalFilename!=null && originalFilename.length()>0){
//存储图片的物理路径
String pic_path = "F:\develop\upload\temp\";
//新的图片名称
String newFileName = UUID.randomUUID() + originalFilename.substring(originalFilename.lastIndexOf("."));
//新图片
File newFile = new File(pic_path+newFileName);
//将内存中的数据写入磁盘
items_pic.transferTo(newFile);
//将新图片名称写到itemsCustom中
itemsCustom.setPic(newFileName);
}
return "success";
}
3.注意:使用的时候发现一个问题,上传中文文件接收不到文件名,数字和英文的可以。
这时候需要把tomcat的8080端口(HTTP连接器的端口标签,protocol="HTTP/1.1"的那个)和8080端口跳转的端口(8443,如果没有这个端口不加也行)的标签末尾加上URIEncoding="UTF-8",亲测可用。
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8" />