Spring MVC File Unggah dan Unduh, sebagai berikut:
(1) Impor Paket Jar: Ant.Jar, Commons-Fileupload.jar, Connom-Oo.jar.
(2) Tambahkan SRC/Context/Dispatcher.xml
<bean id = "multipartresolver" p: defaultEncoding = "UTF-8" />
Perhatikan bahwa Anda perlu menambahkan konten ke kepala, seperti yang ditunjukkan di bawah ini setelah menambahkan:
<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.spramework.orgal http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.org/xscha
(3) Tambahkan kelas alat FileOperateTil.java
/ ** * * @author geoin */ package com.geloin.spring.util; impor java.io.bufferedInputStream; impor java.io.bufferedoutputStream; impor java.io.file; impor java.io.fileInputStream; impor java.io.fileoutputStream; impor java.text.simpledateFormat; impor java.util.arraylist; impor java.util.date; impor java.util.hashmap; impor java.util.iterator; impor java.util.list; impor java.util.map; impor javax.servlet.http.httpservletRequest; impor javax.servlet.http.httpservletResponse; impor org.apache.tools.zip.zipentry; impor org.apache.tools.zip.zipoutputStream; impor org.springframework.util.filecopyutils; impor org.springframework.web.multipart.multipartfile; impor org.springframework.web.multipart.multipartttpservletRequest; Public Class FileOpateTil {Private Static Final String RealName = "RealName"; Private Static Final String Storename = "Storename"; ukuran string final statis privat = "size"; Private Static Final String Suffix = "Suffix"; Private Static Final String ContentType = "ContentType"; Private Static Final String CreateTime = "CreateTime"; Private Static Final String unggahdir = "unggahdir/"; / ** * Ubah nama file yang diunggah * * @param nama * @return */ private static string ganti nama (nama string) {long now = long.parselong (new SimpleDateFormat ("yyyymmddhhmmss") .Format (tanggal baru ())); Long acak = (panjang) (math.random () * sekarang); String filename = sekarang + "" + acak; if (name.indexof (".")! = -1) {fileName += name.substring (name.LastIndexof (".")); } mengembalikan nama file; } / ** * Nama file terkompresi * * @param nama * @return * / private static string zipname (nama string) {string prefix = ""; if (name.indexof (".")! = -1) {prefix = name.substring (0, name.LastIndexof (".")); } else {prefix = name; } return awalan + ".zip"; } / ** * Unggah file * * @param permintaan * @param params * @param values * @return * @throws Exception * / Daftar statis publik <peta <string, objek >> unggah (httpservletRequest request, string [] Param, peta <String, Object [] values) Lempar Pengecualian {List <String, Par Param, MAP <String, NEXIT []> MultiparthttpServletRequest mRequest = (multipartttpservletRequest) permintaan; Peta <String, MultipartFile> filemap = mRequest.getFileMap (); String unggahdir = request.getSession (). GetserVletContext () .getRealPath ("/") + FileOperateutil.uploaddir; File file = file baru (unggah); if (! file.exists ()) {file.mkdir (); } String fileName = null; int i = 0; untuk (iterator <map.entry <string, multipartFile>> it = filemap.entryset () .iterator (); it.hasnext (); i ++) {map.entry <string, multipartFile> entri = it.next (); Multipartfile mfile = entry.getValue (); fileName = mfile.getoriginalfileName (); String storeName = ganti nama (nama file); String nozipname = unggahdir + storename; String zipname = zipname (nozipname); // unggah untuk menjadi file zipoutputStream outputStream = new zipoutputStream (baru bufferedoutputStream (fileoutputStream baru (zipName)))); outputStream.putNextEntry (zipentry baru (nama file)); outputStream.setencoding ("GBK"); Filecopyutils.copy (mfile.getInputStream (), outputStream); Peta <string, object> peta = hashmap baru <string, object> (); // Nilai parameter tetap peta peta.put (fileOperateutil.RealName, zipname (fileName)); Map.put (FileOperateutil.Storename, ZipName (Storename)); Map.put (FileOperateutil.Size, File Baru (ZipName) .length ()); Map.put (FileOpateTil.Suffix, "Zip"); Map.put (FileOpateTil.ContentType, "Application/Octet-Stream"); Map.put (FileOperateutil.CreateTime, new Date ()); // pasangan nilai parameter khusus untuk (string param: params) {map.put (param, values.get (param) [i]); } result.add (peta); } hasil pengembalian; } / ** * Unduh * @param Permintaan * @param Response * @param Storename * @param contentType * @param realname * @throws Exception * / public static void download (httpservletRequest request, httpservletResponse response, String Storename, String ContentType, String RealName) Throwser response.setContentType ("Teks/html; charset = utf-8"); request.setcharacterencoding ("UTF-8"); BufferedInputStream bis = null; BufferedOutputStream bos = null; String ctxpath = request.getSession (). GetserVletContext () .getRealPath ("/") + FileOpateCeutil.uploaddir; String downloadpath = ctxpath + storename; long filelength = file baru (downloadpath) .length (); response.setContentType (ContentType); response.setHeader ("konten-disposisi", "lampiran; fileName =" + string baru (realname.getbytes ("UTF-8"), "ISO8859-1"))); response.setHeader ("length-length", string.ValueOf (filelength)); BIS = BufferedInputStream baru (FileInputStream baru (DownloadPath)); bos = baru bufferedoutputStream (response.getoutputStream ()); byte [] buff = byte baru [2048]; int bytesread; while (-1! = (bytesread = bis.read (buff, 0, buff.length))) {bos.write (buff, 0, bytesread); } bis.close (); bos.close (); }} Ini dapat digunakan sepenuhnya tanpa mengubah kelas. Perlu dicatat bahwa file yang diunggah ditempatkan di bawah WebContent/unggahdir.
(4) Tambahkan FileOperateController.java
/ ** * * @author geoin */ package com.geloin.spring.controller; impor java.util.hashmap; impor java.util.list; impor java.util.map; impor javax.servlet.http.httpservletRequest; impor javax.servlet.http.httpservletResponse; impor org.springframework.stereotype.controller; impor org.springframework.web.bind.servletrequestutils; impor org.springframework.web.bind.annotation.requestmapping; impor org.springframework.web.servlet.modelandview; impor com.geloin.spring.util.fileopercyutil; @Controller @RequestMapping(value = "background/fileOperate") public class FileOperateController { /** * To the location where the file is uploaded* @return */ @RequestMapping(value = "to_upload") public ModelAndView toUpload() { return new ModelAndView("background/fileOperate/upload"); } / ** * Unggah file * * @param permintaan * @return * @throws Exception * / @RequestMapping (value = "unggah") unggah model publik (permintaan httpservletRequest) Lempar pengecualian {peta <string, object> peta = new HashMap <String, Object> (); // alias string [] alaises = servletrequestutils.getStringparameters (permintaan, "alais"); String [] params = string baru [] {"alais"}; Peta <String, Object []> values = hashmap baru <string, objek []> (); values.put ("alais", alaise); Daftar <peta <string, objek >> result = fileOperateutil.upload (permintaan, params, nilai); peta.put ("hasil", hasil); return new ModelAndView ("Background/FileOperate/List", peta); } / ** * Unduh * * @param lampiran * @param permintaan * @param Response * @return * @throws Exception * / @RequestMapping (value = "download") public ModelAndView Unduh (httpservletRequest, httpservletResponse) Tanggapan Exception {string storename = "20120505050505141414141414141414 String realname = "java Design Pattern.zip"; String contentType = "Aplikasi/Octet-Stream"; FileOperateutil.Download (Permintaan, Respons, Storename, ContentType, RealName); kembali nol; }}Harap ubah metode unduhan sendiri. Jika Anda menggunakan database untuk menyimpan informasi file yang diunggah, silakan merujuk ke Integrasi MVC Spring MyBatis.
(5) Tambahkan 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"%> <! Doctm html html html html "public" public "public" wubl/win/doctp htl htl htl ht/docty/docty/docty/docty. Transisional // en "" http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd "> <html> <-head> <meta http-equiv =" content "content" content = "teks/html; </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 = "kirim" value = "unggah" /> < /form> < /html>
Pastikan nilai enctype adalah multipart/form-data; Nilai metode adalah posting.
(6) Tambahkan 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"%> <! Doctm html html html html "public" public "public" wubl/win/doctp htl htl htl ht/docty/docty/docty/docty. Transisional // en "" http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd "> <html> <-head> <meta http-equiv =" content "content" content = "teks/html; <c: foreach item = "$ {result}" var = "item"> <c: foreach item = "$ {item}" var = "m"> <c: if test = "$ {m.key eq 'realname'}"> $ {m.value} </c: if> <br/</c: foreach> c: c: foreach> </c: if> </c: foreach> c: foreach> c: foreach> </c: if> </c: foreach> </c: foreach> c: foreach> </c: foreach> </c: foreach> </c: foreach>(7) Akses halaman unggah melalui http: // localhost: 8080/spring_test/latar belakang/fileOperate/to_upload.html, dan unduh file melalui http: // localhost: 8080/spring_test/latar belakang/fileoPerate/download.html
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.