欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring MVC 文件上傳下載的實(shí)例

 更新時(shí)間:2017年01月09日 10:31:48   作者:geloin  
本篇文章主要介紹了Spring MVC 文件上傳下載的實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

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

(1) 導(dǎo)入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" /> 

注意,需要在頭部添加內(nèi)容,添加后如下所示:

<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/"; 
 
 /** 
  * 將上傳的文件進(jìn)行重命名 
  * 
  * @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>(); 
   // 固定參數(shù)值對(duì) 
   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()); 
 
   // 自定義參數(shù)值對(duì) 
   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(); 
 } 
} 

可完全使用而不必改變?cè)擃?,需要注意的是,該類中設(shè)定將上傳后的文件放置在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設(shè)計(jì)模式.zip"; 
  String contentType = "application/octet-stream"; 
 
  FileOperateUtil.download(request, response, storeName, contentType, 
    realName); 
 
  return null; 
 } 
} 

下載方法請(qǐng)自行變更,若使用數(shù)據(jù)庫(kù)保存上傳文件的信息時(shí),請(qǐng)參考Spring MVC 整合Mybatis實(shí)例。

(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) 通過(guò)http://localhost:8080/spring_test/background/fileOperate/to_upload.html訪問(wèn)上傳頁(yè)面,通過(guò)http://localhost:8080/spring_test/background/fileOperate/download.html下載文件

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中如何正確重寫(xiě)equals方法

    Java中如何正確重寫(xiě)equals方法

    Object類中equals方法比較的是兩個(gè)對(duì)象的引用地址,只有對(duì)象的引用地址指向同一個(gè)地址時(shí),才認(rèn)為這兩個(gè)地址是相等的,否則這兩個(gè)對(duì)象就不相等
    2021-10-10
  • java中Collections.sort排序詳解

    java中Collections.sort排序詳解

    這篇文章主要介紹了java中Collections.sort排序詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • java實(shí)現(xiàn)象棋小游戲

    java實(shí)現(xiàn)象棋小游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)象棋小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-01-01
  • springboot如何使用thymeleaf模板訪問(wèn)html頁(yè)面

    springboot如何使用thymeleaf模板訪問(wèn)html頁(yè)面

    springboot中推薦使用thymeleaf模板,使用html作為頁(yè)面展示。那么如何通過(guò)Controller來(lái)訪問(wèn)來(lái)訪問(wèn)html頁(yè)面呢?下面通過(guò)本文給大家詳細(xì)介紹,感興趣的朋友跟隨腳本之家小編一起看看吧
    2018-05-05
  • Java中怎樣使用JSON進(jìn)行文件解析

    Java中怎樣使用JSON進(jìn)行文件解析

    這篇文章主要介紹了Java中怎樣使用JSON進(jìn)行文件解析問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 深入了解java-jwt生成與校驗(yàn)

    深入了解java-jwt生成與校驗(yàn)

    這篇文章主要介紹了深入了解java-jwt生成與校驗(yàn),Json web token(JWT)是為了網(wǎng)絡(luò)應(yīng)用環(huán)境間傳遞聲明而執(zhí)行的一種基于JSON的開(kāi)發(fā)標(biāo)準(zhǔn)(RFC 7519),該token被設(shè)計(jì)為緊湊且安全的,特別適用于分布式站點(diǎn)的單點(diǎn)登陸(SSO)場(chǎng)景。,需要的朋友可以參考下
    2019-06-06
  • Java方法的可變參數(shù)類型實(shí)例分析

    Java方法的可變參數(shù)類型實(shí)例分析

    這篇文章主要介紹了Java方法的可變參數(shù)類型,通過(guò)實(shí)例對(duì)Java中的可變參數(shù)類型進(jìn)行了較為深入的分析,需要的朋友可以參考下
    2014-09-09
  • springMVC幾種頁(yè)面跳轉(zhuǎn)方式小結(jié)

    springMVC幾種頁(yè)面跳轉(zhuǎn)方式小結(jié)

    本篇文章主要介紹了springMVC 幾種頁(yè)面跳轉(zhuǎn)方式,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-02-02
  • 詳解springmvc控制登錄用戶session失效后跳轉(zhuǎn)登錄頁(yè)面

    詳解springmvc控制登錄用戶session失效后跳轉(zhuǎn)登錄頁(yè)面

    本篇文章主要介紹了springmvc控制登錄用戶session失效后跳轉(zhuǎn)登錄頁(yè)面,session一旦失效就需要重新登陸,有興趣的同學(xué)可以了解一下。
    2017-01-01
  • java實(shí)現(xiàn)文件讀寫(xiě)與壓縮實(shí)例

    java實(shí)現(xiàn)文件讀寫(xiě)與壓縮實(shí)例

    這篇文章主要介紹了java實(shí)現(xiàn)文件讀寫(xiě)與壓縮實(shí)例,有助于讀者加深對(duì)文件操作的理解,需要的朋友可以參考下
    2014-07-07

最新評(píng)論