تم استخدام وظائف تحميل الملف والتنزيل في المشاريع الحديثة. أعتقد أن هذه الوظيفة أكثر أهمية ، لذلك قمت باستخراجها خصيصًا وجربتها بنفسي.
فيما يلي الخطوات المحددة لتحميل الملفات وتنزيلها في بيئة تكوين SpringMVC للرجوع إليها. المحتوى المحدد كما يلي
1. التكوين الأساسي:
حزمة استيراد Maven والتكوين pom.xml. بالإضافة إلى التبعيات الأساسية لـ springMVC ، من الضروري استيراد المشاع-jsr و commons-filepload.jar المستخدمة عند تحميل الملفات:
<project xmlns = "http://maven.apache.org/pom/4.0.0" http://maven.apache.org/maven-v4_0_0.xsd "> <Dodeversion> 4.0.0 </modelversion> <roupiD> filloadtest </rougiD> <shintifactid> fillOadtest </artifactid> <cloating> حرب </packaging> WebApp </mame> <Url> http://maven.apache.org </url> <buyname> finaloadtest </finalname> <plugins> <!- يمكن للتكوين التالي التأكد من أن إصدار JRE لن يتغير في كل مرة يتم فيها التحديث القسري ، ثم Eclipse4.4.1 و Maven3.5. إذا لم تقم بتعيين هذا ، فسيقوم JRE بالعودة إلى 1.5 في كل مرة يتم فيها إجبار التحديث القسري-> <plugin> <StifactId> maven-compiler-plugin </shanpactid> <sophy> 2.3.2 </splire> <configuration> <source> 1.7 </ource> </soph> </target> <TOTClassPath> $ {java.home} /lib/rt.jar </booclasspath> </sermslarguments> </isplisturation> </sultiin> </build> <ependencies> <redenced> </groupid> junit </groupid> <Rependency> <roupEd> org.springframework </rougiD> <StifactId> Spring-Webmvc </stifactid> <sophy> 4.0.6.Release </version> </sependency> <trepency> <roupiD> com.fasterxml.jackson.core </rougeid> <soph> 2.2.3 </version> </sependency> <redency> <roupiD> com.fasterxml.jackson.core </rougeid> <StifactId> Jackson-Core </artifactid> <soph> <StifactId> Jackson-Databind </shintifactid> <sophy> 2.2.3 </version> </sependency> <sependency> <roupled> commons-filepload </rougeid> <StifactId> commons-filepload </stifactid> <StifactId> commons-io </shintifactid> <الإصدار> 2.4 </version> </perendency> </تبعية> </project>التكوين الأساسي لـ web.xml:
<؟ xmlns: web = "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi: schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd "id =" webapp_id "version =" 2.5 "> <fisplter> <Filter-Class> org.springframework.web.filter.characterencodingfilter </filter-class> <Init-param> <speciped> charset الترميز </descriver <Filter-Name> encodingFilter </filter-name> <url-pattern>/*</url-pattern> </filter-mapping> <vervlet> <Servlet-name> springmvc </radled-name> <Iparlet-class> org.springframework.web.servlet.dispatcherserv <Param-name> contextConfigLocation </parm-name> <Param-value> classpath: spring.xml </parm-value> </ith-param> </servlet> <sterled mapping> <sterlet-name> springmvc </servlet-name> <Url-patern>. <self-file> index.html </ishified-file> <lispile> index.htm </ishified-file> <lispile-file> index.jsp </ishified-file> <lispile-file> index.jsp </elvering-file> default> default </swith-file-list> </web-app>
Spring Basic Configuration spring.xml:
<؟ xmlns: p = "http://www.springframework.org/schema/p" XSI: schemalocation = "http://www.springframework.org/schema/beans http://www.springframework.org/schema/context/spring-context-3.0.xsd <السياق: التعليق التوضيحي-config /> <mvc: يحركه التعليق التوضيحي /> <السياق: مكون المسح الضوئي = "وحدات التحكم" /> <!-لتجنب تنزيل الملفات من العودة إلى JSON عندما ينفذ IE AJAX-> <bean id = "mappingjacksonhttpmessageconverter"> <Value> text/html ؛ charset = utf-8 </value> </list> </property> </boan> <!-لتمكين وظيفة شرح الربيع MVC لإكمال رسم خرائط وشروط التعليقات التوضيحية pojos-> <bean> <property name = "messageConverters"> <list> </list> </property> </bean> <!-دعم تحميل الملفات-> <bean id = "multipartresolver"> <!-100m-> <property name = "maxuploadsize" value = "104857600"> </propert
2. رمز تحميل الملف
بالنسبة إلى index.html تم تحميله البسيط.
<! doctype html> <html> <head> <meta http-equiv = "content-type" content = "text/html ؛ charset = utf-8"/> </head> <body> <form> اكتب = "إرسال" value = "إرسال"/> </form> </body> </html>
قم بتحميل كود Java الخلفية المقابلة. للحصول على أسئلة محددة ، يرجى الرجوع إلى التعليقات:
وحدات التحكم في الحزمة ؛ استيراد java.io.file ؛ استيراد java.io.ioException ؛ استيراد java.util.iterator ؛ استيراد javax.servlet.http.httpservletrequest ؛ استيراد org.apache.commons.io.fileutils ؛ استيراد org.springframework.http.httpheaders ؛ استيراد org.springframework.http.httpstatus ؛ استيراد org.springframework.http.mediatepe ؛ استيراد org.springframework.http.sponseentity ؛ استيراد org.springframework.stereotype.controller ؛ استيراد org.springframework.web.bind.annotation.requestmapping ؛ استيراد org.springframework.web.bind.annotation.requestmethod ؛ استيراد org.springframework.web.bind.annotation.requestparam ؛ استيراد org.springframework.web.multipart.multipartfile ؛ استيراد org.springframework.web.multipart.multiparthttpservletRequest ؛ استيراد org.springframework.web.multipart.commons.CommonSmultiPartresolver ؛ controller الفئة العامة fileController { /** * تحميل الملف * * author: tuzongxun * title: uploadfile * @param @param file * @param request * @param @pm * 22:00 pm * 22:00 pm * 22:00 pm * 2 requestmapping (value = "/Uploadfile.do" ، method = requestMethod.post) public void uploadfile (httpservletrequest request) rems alfictstateException ، ioException {// requestparam ("file" request.getSession (). getServletContext ()) ؛ // حدد ما إذا كان الطلب يحتوي على ملف ، أي إذا كان (multipartresolver.ismultipart (request)) {// تحويل إلى طلب multipart multiparthttpservletrequest multirequest = (multiparthttpservletrequest) ؛ // احصل على جميع أسماء الملفات في request iterator <string> iter = multirequest.getFilenames () ؛ بينما (iter.hasnext ()) {// الحصول على تحميل ملف multipartfile f = multirequest.getFile (iter.next ()) ؛ if (f! = null) {// احصل على اسم الملف لسلسلة الملفات التي تم تحميلها حاليًا myfilename = f.getoriginalfilename () ؛ // إذا لم يكن الاسم "" ، فهذا يعني وجود الملف ، وإلا فهذا يعني أن الملف غير موجود إذا (myfilename.trim ()! = "") {// تحديد مسار مسار التحميل = "c: // user // tuzongxun123 // desktop //" + myfilename ؛ ملف localfile = ملف جديد (path) ؛ F.Transferto (localfile) ؛ }}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}بعد تحديد الملف لإرساله ، سترى أن الملف المحدد قد تم نقله إلى الموقع المحدد في الرمز. عرض الصفحة على النحو التالي
3. تنزيل الملف
يتطلب تنزيل الملف مسار التخزين للملف الذي تم تنزيله. تم ملء هذا يدويًا. إذا كان في مشروع معين ، فيمكنك حفظ اسم الملف ومسار التخزين الذي تم تحميله في قاعدة البيانات. ثم أضف صفحة من قائمة الملفات لعرض اسم الملف ومسار الملف ، ثم انقر لتحميل اسم الملف المقابل والمسار إلى عملية الخلفية عند التنزيل.
/** * تنزيل الملف ، اسم الملف وعنوان الملف المطلوب * * author: tuzongxun * title: download * @param @param name * @param @param @param @return * @param @throws ioException * returnresponseentity <byte [] استجابة <byte []> تنزيل (requestparam ("name") اسم السلسلة ، requestparam ("filepath") مسار السلسلة) يلقي ioException {file file = new file (path) ؛ Httpheaders رؤوس = httpheaders جديدة () ؛ اسم Filename = new string (name.getBytes ("UTF-8") ، "ISO-8859-1") ؛ // من أجل حل مشكلة الأسماء الصينية المشوهة. headers.setContentType (mediaType.application_octet_stream) ؛ إرجاع استجابة جديدة <byte []> (fileUtils.ReadFileTobyTearray (ملف) ، رؤوس ، httpstatus.created) ؛ } صفحة HTML هي مجرد ملء بسيط في اسم الملف ومسار الملف ، وإرساله إلى الخلفية باستخدام نموذج النموذج. ثم ستتحكم الخلفية في الاستجابة إلى مربع التحديد لحفظ مسار الملف المنبثق على الصفحة. بالطبع ، لم أفعل أي شيء في الخلفية هنا. إذا لم يكن الملف موجودًا ، فسيتم الإبلاغ عن خطأ. يمكنك إجراء المعالجة المقابلة:
تنزيل الملف:
</br> </br> <form action = "./ downloadfile.do" style = "border: 1px Solid Gray ؛ Width: Auto ؛" method = "post"> اسم الملف: <input type = "text" name = "name"/> </br> </br> مسار الملف: <input type = "text" name =
عرض الصفحة كما يلي:
إذا لم يكن الملف موجودًا ، فإن الخطأ هو كما يلي:
ما سبق هو كل شيء عن هذا المقال ، آمل أن يكون مفيدًا لتعلم الجميع.