Idea开发环境中,为Tomcat配置虚拟目录。其实就是为Tomcat添加一个本地存储文件的路径,通过Tomcat可以进行访问。
http://localhost:8080/pic/123.jpg
实现图片上传需要加入的jar包。fileupload.jar, io.jar。
在spring-mvc中配置文件上传解析器
Jsp页面:
http://localhost:8080/pic/123.jpg
实现图片上传需要加入的jar包。fileupload.jar, io.jar。
在spring-mvc中配置文件上传解析器
Jsp页面:
enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码。图片上传的时候需要用到这个路径。enctype="multipart/form-data"
在spring-mvc中配置文件上传的bean
<!--配置文件上传解析器:主要用于文件上传-->
<!--主要使用此类进行解析CommonsMultipartResolver-->
<!-- 文件上传,id必须设置为multipartResolver -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- 文件最大值5m -->
<property name="maxUploadSize" value="5000000"/>
<!-- 默认编码 -->
<property name="defaultEncoding" value="utf-8"/>
<!-- 内存中的最大值 -->
<property name="maxInMemorySize" value="40960"/>
</bean>
代码如下:
@RequestMapping(value = "uploadImage.do",method = RequestMethod.POST)
public String uploadPic(MultipartFile pictureFile,HttpServletRequest request) throws IOException {
//随机生成32位的字符串
String picName = UUID.randomUUID().toString().replace("-", "");
//获取用户上传的文件的名称
String originalFilename = pictureFile.getOriginalFilename();
//获取文件的后缀名
String extension = FilenameUtils.getExtension(originalFilename);
//获取图片的路径
String rootPath= request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+"/pic/";
//把文件写入到本地磁盘中
pictureFile.transferTo(new File("D:\\pic\\" + picName + "." + extension));
//把图片路径保存到数据库中
mProductServiceImpl.updateProductImageInfo(rootPath+picName + "." + extension);
return "success";
//MultipartFile类的使用
//返回原来的文件名:getOriginalFilename()
//将内存中的图片资源保存到指定路径:transferTo(File dest)
//HttpServletRequest对象
//request.getScheme() 获取协议名称
//request.getServerName() 获取服务器域名
//request.getServerPort() 获取应用程序端口
}
//把新的图片地址写入到对象中,方便数据库中更新
itemsCustom.setPic(newfileName);
//调用service更新商品信息,页面需要将商品信息传到此方法
itemsService.updateItems(id, itemsCustom);
HTML界面
<body>
图片上传
<form action="${pageContext.request.contextPath}/upload/uploadImage.do" method="post" enctype="multipart/form-data">
<input type="file" name="pictureFile"/>
<input type="submit" value="提交" />
</form>
</body>