تحميل ملف Spring MVC وتنزيله ، على النحو التالي:
(1) استيراد حزم الجرة: ant.jar ، المشاع filepload.jar ، connom-io.jar.
(2) إضافة في SRC/Context/Dispatcher.xml
<bean id = "multipartresolver" p: defaultencoding = "utf-8" />
لاحظ أنك تحتاج إلى إضافة محتوى إلى الرأس ، كما هو موضح أدناه بعد الإضافة:
<beans default-lazy-init = "true" xmlns = "http://www.springframework.org/schema/beans Xmlns: XSI = "http://www.w3.org/2001/xmlschema-instance" Xmlns: mvc = "http://www.springframework.org/schema/mvc" http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context/spring-context-3.0.xsd ">
(3) أضف فئة الأدوات fileOperateUtil.java
/ ** * * Author Geoin */ package com.geloin.spring.util ؛ استيراد java.io.bufferedInputStream ؛ استيراد java.io.bufferedOutputStream ؛ استيراد java.io.file ؛ استيراد java.io.fileInputStream ؛ استيراد java.io.fileOutputStream ؛ استيراد java.text.simpledateformat ؛ استيراد java.util.arraylist ؛ استيراد java.util.date ؛ استيراد java.util.hashmap ؛ استيراد java.util.iterator ؛ استيراد java.util.list ؛ استيراد java.util.map ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد org.apache.tools.zip.zipentry ؛ استيراد org.apache.tools.zip.zipoutputStream ؛ استيراد org.springframework.util.fileCopyUtils ؛ استيراد org.springframework.web.multipart.multipartfile ؛ استيراد org.springframework.web.multipart.multiparthttpservletRequest ؛ الفئة العامة fileOperateUtil {private static Final String RealName = "RealName" ؛ Storename storename storename الثابتة الخاصة = "storename" ؛ حجم السلسلة النهائية الثابتة الخاصة = "الحجم" ؛ Static Static Final Final لاحقة = "لاحقة" ؛ private Static Final String ContentType = "ContentType" ؛ Static Final String CreateTime = "CreateTime" ؛ Static Static Final String UploadDir = "UploadDir/" ؛ / ** * أعد تسمية الملف الذي تم تحميله * * param اسم * @RETURN */ إعادة تسمية السلسلة الثابتة الخاصة (اسم السلسلة) {long now = long.parselong (جديد simpleatformat ("yyyymmddhhmmss") .Format (date ())) ؛ عشوائي طويل = (طويل) (Math.Random () * الآن) ؛ اسم ملف السلسلة = الآن + "" + عشوائي ؛ if (name.indexof (". } اسم ملف الإرجاع ؛ } / ** * اسم الملف المضغوط * * param name * return * / private static String ZipName (اسم السلسلة) {String prefix = "" ؛ if (name.indexof (".")! = -1) {prefix = name.subString (0 ، name.lastindexof (".")) ؛ } آخر {prefix = name ؛ } PROTTER PROTIX + ".zip" ؛ } / ** * ملف التحميل * * param request * param params * param values * return * @throws استثناء * / قائمة ثابتة عامة <map <string ، object >> expload (httpservletrequest request ، string [] params ، map <string ، object [] multiparthttpservletrequest mrequest = (multiparthttpservletrequest) طلب ؛ الخريطة <string ، multipartfile> fileMap = mrequest.getFileMap () ؛ String UploadDir = request.getSession (). getServletContext () .getRealPath ("/") + fileOperateUtil.uploaddir ؛ ملف الملف = ملف جديد (eploaddir) ؛ if (! file.exists ()) {file.mkdir () ؛ } اسم ملف السلسلة = فارغ ؛ int i = 0 ؛ لـ (iterator <map.entry <string ، multipartfile >> it = fileMap.EntrySet () .iterator () ؛ it.hasNext () ؛ i ++) {map.entry <string ، multipartfile> entry = it.next () ؛ multipartfile mfile = enter.getValue () ؛ اسم الملف = mfile.getoriginalfilename () ؛ String storename = إعادة تسمية (اسم الملف) ؛ String nozipName = UploadDir + storename ؛ سلسلة zipname = zipname (nozipName) ؛ . outputStream.PutNextentry (zipentry new (filename)) ؛ outputStream.setEncoding ("GBK") ؛ fileCopyUtils.copy (mfile.getInputStream () ، outputStream) ؛ خريطة <string ، object> map = new hashmap <string ، Object> () ؛ . map.put (fileOperateUtil.storename ، zipname (storename)) ؛ map.put (fileOperateUtil.size ، ملف جديد (ZipName) .length ()) ؛ map.put (fileOperateUtil.suffix ، "zip") ؛ map.put (fileOperateUtil.contentType ، "Application/Octet-stream") ؛ map.put (fileOperateUtil.createTime ، date ()) ؛ // زوج قيمة المعلمة المخصصة لـ (String param: params) {map.put (param ، values.get (param) [i]) ؛ } result.add (map) ؛ } نتيجة الإرجاع ؛ } / ** * تنزيل * param طلب * param استجابة * param storename * param contentType * param realName * therwes استثناء * / تنزيل باطل ثابت ثابت (httpservletrequest طلب ، استجابة httpservletspons استجابة. request.setcharacterencoding ("UTF-8") ؛ BufferedInputStream BIS = NULL ؛ bufferedoutputstream bos = null ؛ String CTXPath = request.getSession (). getServletContext () .getRealPath ("/") + fileOperateUtil.uploaddir ؛ String DownloadPath = CTXPath + Storename ؛ long fileLength = ملف جديد (تنزيل path) .length () ؛ استجابة. استجابة. استجابة. BIS = جديد bufferedInputStream (جديد fileInputStream (downloadPath)) ؛ BOS = جديد bufferedOutputStream (response.getOutputStream ()) ؛ Byte [] Buff = New Byte [2048] ؛ int bytesread ؛ بينما (-1! = (bytesread = bis.read (Buff ، 0 ، Buff.length))) {bos.write (Buff ، 0 ، bytesread) ؛ } bis.close () ؛ bos.close () ؛ }} يمكن استخدامه تمامًا دون تغيير الفصل. تجدر الإشارة إلى أن الملف الذي تم تحميله يتم وضعه ضمن WebContent/UploadDir.
(4) إضافة fileOperateController.java
/ ** * * author geoin */ package com.geloin.spring.controller ؛ استيراد java.util.hashmap ؛ استيراد java.util.list ؛ استيراد java.util.map ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد javax.servlet.http.httpservletresponse ؛ استيراد org.springframework.stereotype.controller ؛ استيراد org.springframework.web.bind.servletrequestutils ؛ استيراد org.springframework.web.bind.annotation.requestmapping ؛ استيراد org.springframework.web.servlet.modelandview ؛ استيراد com.geloin.spring.util.fileOperateutil ؛ controller @requestmapping (value = "background/fileOperate") public fileOperateController {/*** إلى الموقع الذي يتم فيه تحميل الملف* @REGRENT*/ @REQUESTMAPP (value = "to_upload") publicandview toupload () } / ** * upload file * * param request * regurn * @throws استثناء * / @requestmapping (value = "epload") public ModelAndView Upload (httpservletrequest request) يلقي استثناء {MAP ، Object> map = new hashmap <string ، Object> () ؛ // alias string [] alaises = servletRequestutils.getStringParameters (request ، "alais") ؛ String [] params = new string [] {"alais"} ؛ خريطة <string ، object []> القيم = new hashmap <string ، object []> () ؛ القيم. قائمة <map <string ، object >> result = fileOperateUtil.upload (طلب ، params ، القيم) ؛ map.put ("النتيجة" ، النتيجة) ؛ إرجاع New ModelAndView ("Background/FileOperate/List" ، MAP) ؛ } /** * Download* * @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 Design Pattern.zip" ؛ string contentType = "Application/Octet-stream" ؛ FileOperateUtil.Download (طلب ، استجابة ، storename ، contentType ، RealName) ؛ العودة لاغية. }}الرجاء تغيير طريقة التنزيل بنفسك. إذا كنت تستخدم قاعدة البيانات لحفظ معلومات الملف التي تم تحميلها ، فيرجى الرجوع إلى مثيل SPRING MVC Integration MyBatis.
(5) إضافة FileOperate/Topload.jsp
<٪@ page language = "java" contentType = "text/html ؛ charset = utf-8" pageencoding = "utf-8" ٪> <٪@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core Transitional // en "" http://www.w3 </body> <form enctype = "multipart /form-data" Action = "<c: url value =" /probsture /fileOperate /Upload.html " />" method = "post"> <input type = "file" name = "file1" /> <input type = "text" name = "alais" /> <br /> name = "alais" /> <br /> <input type = "file" name = "file3" /> <input type = "text" name = "alais" /> <br /> <input type = "pridt" value =
تأكد من أن قيمة enctype متعددة/بيانات النموذج ؛ قيمة الطريقة هي نشر.
(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 Transitional // en "" http://www.w3 <c: foreach heads = "$ {result}" var = "item"> <c: foreach heads = "$ {item}" var = "m"> <c: if test = "$ {m.key eq 'realname'}"> $ {m.value} </c: if> </c: for equeach>(7) الوصول إلى صفحة التحميل من خلال http: // localhost: 8080/spring_test/background/fileOperate/to_upload.html ، وقم بتنزيل الملف من خلال http: // localhost: 8080/spring_test/background/fileoperate.html
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.