1. 配置虚拟目录
1)、在tomcat上配置图片虚拟目录,在tomcat下conf/server.xml中添加:
<Context docBase="D:\develop\upload\temp" path="/pic" reloadable="false"/>
访问http://localhost:8080/pic即可访问D:\develop\upload\temp下的图片。
2)、也可以通过eclipse配置,如下图:
3)、复制一张图片到存放图片的文件夹,使用浏览器访问测试效果,如下图:
2. 加入jar包
1)、实现图片上传需要加入的jar包,如下图
基于jar的方式导入
基于maven的方式导入依赖
<!-- 文件上传需要导入的坐标依赖 --> <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.1</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>
3. 配置上传解析器
<bean id="commonsMultipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <!--上传文件的编码类型--> <property name="defaultEncoding" value="utf-8"></property> <!--上传单个文件的大小--> <property name="maxUploadSizePerFile" value="50000000"></property> <!--上传文件的总大小--> <property name="maxUploadSize" value="54288600"></property> </bean>
4. jsp页面修改
1)、在商品修改页面,打开图片上传功能,如下图:
2)、设置表单可以进行文件上传,如下图:
5. 图片上传
1)、在更新商品方法中添加图片上传逻辑
@RequestMapping(value = "/updateItem") public String updateItem(Items items,MultipartFile pictureFile) throws IllegalStateException, IOException { // 图片上传 // 设置图片名称,不能重复,可以使用uuid String picName = UUID.randomUUID().toString(); // 获取文件名 String oriName = pictureFile.getOriginalFilename(); // 获取图片后缀 String extName = oriName.substring(oriName.lastIndexOf(".")); // 开始上传 pictureFile.transferTo(new File("D:/uploader/" + picName + extName)); // 设置图片名到商品中 items.setPic(picName + extName); service.updateItem(items); return "redirect:/items/queryItemsList"; }
2)、效果,如下图: