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

好了趕快去測試一下行不行


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM