SpringMvc上传图片/使用图片
关于SpringMvc图片上传与使用
有几个朋友不怎么会使用这SpringMvc+maven,想使用它上传头像之类的,以下就是单张图片上传保存
可以代码写得不是很好,但是能用,相当于给大家一些思路,不满意,直接修改就成了
图片保存帮助类 PhotoUtil.java
1 package com.Demo; 2 3 import org.springframework.web.multipart.MultipartFile; 4 5 import javax.servlet.http.HttpServletRequest; 6 import java.io.File; 7 import java.io.FileOutputStream; 8 import java.io.IOException; 9 import java.util.Properties; 10 11 /** 12 * Created by Administrator on 2017/3/29. 13 */ 14 public class PhotoUtil { 15 16 /** 17 * 18 * 功能描述 保存图片 19 * 20 * @param filedata 21 * 文件数据 22 * 返回图片位置 23 */ 24 public static String saveFile( MultipartFile filedata, HttpServletRequest request) { 25 // TODO Auto-generated method stub 26 String pathval = request.getSession().getServletContext().getRealPath("/")+"WEB-INF/"; 27 // 根据配置文件获取服务器图片存放路径 28 String newFileName = String.valueOf( System.currentTimeMillis()); 29 String saveFilePath = "images/uploadFile"; 30 /* 构建文件目录 */ 31 File fileDir = new File(pathval + saveFilePath); 32 if (!fileDir.exists()) { 33 fileDir.mkdirs(); 34 } 35 //上传的文件名 36 String filename=filedata.getOriginalFilename(); 37 //文件的扩张名 38 String extensionName = filename.substring(filename.lastIndexOf(".") + 1); 39 try { 40 String imgPath = saveFilePath + newFileName + "." +extensionName; 41 //System.out.println(pathval + imgPath);打印图片位置 42 FileOutputStream out = new FileOutputStream(pathval + imgPath); 43 // 写入文件 44 out.write(filedata.getBytes()); 45 out.flush(); 46 out.close(); 47 return imgPath; 48 } catch (Exception e) { 49 e.printStackTrace(); 50 } 51 return null; 52 } 53 54 55 /** 56 * 57 * 功能描述:删除图片 58 * 59 * @param oldPic 60 * 61 */ 62 private void deleteFile(String oldPic) { 63 // TODO Auto-generated method stub 64 65 /* 构建文件目录 */ 66 File fileDir = new File(oldPic); 67 if (fileDir.exists()) { 68 //把修改之前的图片删除 以免太多没用的图片占据空间 69 fileDir.delete(); 70 } 71 72 } 73 }
帮助类,复制进去就行了
然后SpringMvc控制文件中需要回一些配置(我的文件名是SpringMvcContext.xml)
<!-- 静态资源映射 -->
<mvc:resources mapping="/images/**" location="/WEB-INF/images/" cache-period="31556926"/>
<!--文件上传的控制-->
<!-- file upload --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"> <property name="maxUploadSize" value="-1"/><!-- 字节单位 --> <property name="maxInMemorySize" value="2048"/><!-- 2M --> <property name="defaultEncoding" value="UTF-8"/> </bean>
其次就是文件的jar包如是用的maven就回上这句话(pom.xml中)
<dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency>
加上后刷新maven在maven的jar包可以看到
当然如果不是使用maven的,要去下载加上下边的jar包
commons-fileupload-1.3.2.jar
和
commons-io-2.4.jar
在Controller当中的使用方法(我的文件名是IndexController.java)
@RequestMapping(value = "upload",method = RequestMethod.POST) public String upload(Model model, @RequestParam("file") MultipartFile file , HttpServletRequest request){ //第一种返回页面的方法 //model.addAttribute("img",PhotoUtil.saveFile(file,request)); //第二种返回页面的方法 request.setAttribute("img",PhotoUtil.saveFile(file,request)); return "test"; }
然后就是html当中的用法(我的文件名是test.jsp)
<!--上传图片、文件的代码-->
<form action="${pageContext.request.contextPath}/uploads" method="post" enctype="multipart/form-data" > <input type="file" name="file"> <input type="submit"> </form>
<!--接收-->
<img src="${pageContext.request.contextPath}/${img}"/>
好了赶快去测试一下行不行
不要为现在着想,要为将来!