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}"/>

好了赶快去测试一下行不行

posted @ 2017-03-29 21:14  Junger  阅读(6797)  评论(0编辑  收藏  举报