国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Spring MVC 文件上傳下載的實例

2019-11-26 13:17:41
字體:
來源:轉載
供稿:網友

Spring MVC 文件上傳下載,具體如下:

(1) 導入jar包:ant.jar、commons-fileupload.jar、connom-io.jar。

(2) 在src/context/dispatcher.xml中添加

<bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver"  p:defaultEncoding="UTF-8" /> 

注意,需要在頭部添加內容,添加后如下所示:

<beans default-lazy-init="true"  xmlns="http://www.springframework.org/schema/beans"  xmlns:p="http://www.springframework.org/schema/p"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xmlns:context="http://www.springframework.org/schema/context"  xmlns:mvc="http://www.springframework.org/schema/mvc"  xsi:schemaLocation="   http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans-3.0.xsd   http://www.springframework.org/schema/mvc    http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd    http://www.springframework.org/schema/context   http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 

(3) 添加工具類FileOperateUtil.java

/**  *  * @author geloin  */ package com.geloin.spring.util;  import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map;  import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;  import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream; import org.springframework.util.FileCopyUtils; import org.springframework.web.multipart.MultipartFile; import org.springframework.web.multipart.MultipartHttpServletRequest;  public class FileOperateUtil {  private static final String REALNAME = "realName";  private static final String STORENAME = "storeName";  private static final String SIZE = "size";  private static final String SUFFIX = "suffix";  private static final String CONTENTTYPE = "contentType";  private static final String CREATETIME = "createTime";  private static final String UPLOADDIR = "uploadDir/";   /**   * 將上傳的文件進行重命名   *   * @param name   * @return   */  private static String rename(String name) {    Long now = Long.parseLong(new SimpleDateFormat("yyyyMMddHHmmss")     .format(new Date()));   Long random = (long) (Math.random() * now);   String fileName = now + "" + random;    if (name.indexOf(".") != -1) {    fileName += name.substring(name.lastIndexOf("."));   }    return fileName;  }   /**   * 壓縮后的文件名   *   * @param name   * @return   */  private static String zipName(String name) {   String prefix = "";   if (name.indexOf(".") != -1) {    prefix = name.substring(0, name.lastIndexOf("."));   } else {    prefix = name;   }   return prefix + ".zip";  }   /**   * 上傳文件   *   * @param request   * @param params   * @param values   * @return   * @throws Exception   */  public static List<Map<String, Object>> upload(HttpServletRequest request,    String[] params, Map<String, Object[]> values) throws Exception {    List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();    MultipartHttpServletRequest mRequest = (MultipartHttpServletRequest) request;   Map<String, MultipartFile> fileMap = mRequest.getFileMap();    String uploadDir = request.getSession().getServletContext()     .getRealPath("/")     + FileOperateUtil.UPLOADDIR;   File file = new File(uploadDir);    if (!file.exists()) {    file.mkdir();   }    String fileName = null;   int i = 0;   for (Iterator<Map.Entry<String, MultipartFile>> it = fileMap.entrySet()     .iterator(); it.hasNext(); i++) {     Map.Entry<String, MultipartFile> entry = it.next();    MultipartFile mFile = entry.getValue();     fileName = mFile.getOriginalFilename();     String storeName = rename(fileName);     String noZipName = uploadDir + storeName;    String zipName = zipName(noZipName);     // 上傳成為壓縮文件    ZipOutputStream outputStream = new ZipOutputStream(      new BufferedOutputStream(new FileOutputStream(zipName)));    outputStream.putNextEntry(new ZipEntry(fileName));    outputStream.setEncoding("GBK");     FileCopyUtils.copy(mFile.getInputStream(), outputStream);     Map<String, Object> map = new HashMap<String, Object>();    // 固定參數值對    map.put(FileOperateUtil.REALNAME, zipName(fileName));    map.put(FileOperateUtil.STORENAME, zipName(storeName));    map.put(FileOperateUtil.SIZE, new File(zipName).length());    map.put(FileOperateUtil.SUFFIX, "zip");    map.put(FileOperateUtil.CONTENTTYPE, "application/octet-stream");    map.put(FileOperateUtil.CREATETIME, new Date());     // 自定義參數值對    for (String param : params) {     map.put(param, values.get(param)[i]);    }     result.add(map);   }   return result;  }   /**   * 下載   * @param request   * @param response   * @param storeName   * @param contentType   * @param realName   * @throws Exception   */  public static void download(HttpServletRequest request,    HttpServletResponse response, String storeName, String contentType,    String realName) throws Exception {   response.setContentType("text/html;charset=UTF-8");   request.setCharacterEncoding("UTF-8");   BufferedInputStream bis = null;   BufferedOutputStream bos = null;    String ctxPath = request.getSession().getServletContext()     .getRealPath("/")     + FileOperateUtil.UPLOADDIR;   String downLoadPath = ctxPath + storeName;    long fileLength = new File(downLoadPath).length();    response.setContentType(contentType);   response.setHeader("Content-disposition", "attachment; filename="     + new String(realName.getBytes("utf-8"), "ISO8859-1"));   response.setHeader("Content-Length", String.valueOf(fileLength));    bis = new BufferedInputStream(new FileInputStream(downLoadPath));   bos = new BufferedOutputStream(response.getOutputStream());   byte[] buff = new byte[2048];   int bytesRead;   while (-1 != (bytesRead = bis.read(buff, 0, buff.length))) {    bos.write(buff, 0, bytesRead);   }   bis.close();   bos.close();  } } 

可完全使用而不必改變該類,需要注意的是,該類中設定將上傳后的文件放置在WebContent/uploadDir下。

(4) 添加FileOperateController.Java

/**  *  * @author geloin  */ package com.geloin.spring.controller;  import java.util.HashMap; import java.util.List; import java.util.Map;  import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse;  import org.springframework.stereotype.Controller; import org.springframework.web.bind.ServletRequestUtils; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView;  import com.geloin.spring.util.FileOperateUtil;  @Controller @RequestMapping(value = "background/fileOperate") public class FileOperateController {  /**   * 到上傳文件的位置   * @return   */  @RequestMapping(value = "to_upload")  public ModelAndView toUpload() {   return new ModelAndView("background/fileOperate/upload");  }   /**   * 上傳文件   *   * @param request   * @return   * @throws Exception   */  @RequestMapping(value = "upload")  public ModelAndView upload(HttpServletRequest request) throws Exception {    Map<String, Object> map = new HashMap<String, Object>();    // 別名   String[] alaises = ServletRequestUtils.getStringParameters(request,     "alais");    String[] params = new String[] { "alais" };   Map<String, Object[]> values = new HashMap<String, Object[]>();   values.put("alais", alaises);    List<Map<String, Object>> result = FileOperateUtil.upload(request,     params, values);    map.put("result", result);    return new ModelAndView("background/fileOperate/list", map);  }   /**   * 下載   *   * @param attachment   * @param request   * @param response   * @return   * @throws Exception   */  @RequestMapping(value = "download")  public ModelAndView download(HttpServletRequest request,    HttpServletResponse response) throws Exception {    String storeName = "201205051340364510870879724.zip";   String realName = "Java設計模式.zip";   String contentType = "application/octet-stream";    FileOperateUtil.download(request, response, storeName, contentType,     realName);    return null;  } } 

下載方法請自行變更,若使用數據庫保存上傳文件的信息時,請參考Spring MVC 整合Mybatis實例。

(5) 添加fileOperate/upload.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Insert title here</title> </head> <body> </body> <form enctype="multipart/form-data"  action="<c:url value="/background/fileOperate/upload.html" />" method="post">  <input type="file" name="file1" /> <input type="text" name="alais" /><br />  <input type="file" name="file2" /> <input type="text" name="alais" /><br />  <input type="file" name="file3" /> <input type="text" name="alais" /><br />  <input type="submit" value="上傳" /> </form> </html> 

 確保enctype的值為multipart/form-data;method的值為post。

(6) 添加fileOperate/list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"  pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Insert title here</title> </head> <body>  <c:forEach items="${result }" var="item">   <c:forEach items="${item }" var="m">    <c:if test="${m.key eq 'realName' }">     ${m.value }    </c:if>    <br />   </c:forEach>  </c:forEach> </body> </html> 

(7) 通過http://localhost:8080/spring_test/background/fileOperate/to_upload.html訪問上傳頁面,通過http://localhost:8080/spring_test/background/fileOperate/download.html下載文件

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 巴青县| 屏东市| 双辽市| 奉新县| 潜山县| 勃利县| 叶城县| 五华县| 富宁县| 荆门市| 巫山县| 吉首市| 伽师县| 昭平县| 怀集县| 福安市| 客服| 贵南县| 益阳市| 米易县| 门头沟区| 文成县| 伊宁县| 万年县| 成都市| 安岳县| 河北区| 凤阳县| 兰西县| 盐亭县| 南宁市| 潼关县| 澜沧| 华宁县| 高淳县| 通州区| 大庆市| 萨迦县| 布尔津县| 南平市| 舞钢市|