كيفية تحميل ملفات متعددة إلى موقع محدد باستخدام Spring MVC؟ البرنامج التعليمي الكامل مع كود جافا
نشرت: 2013-06-22 هذا برنامج تعليمي آخر كامل لـ Spring MVC والذي يقبل الملف في نموذج التحميل ونسخه إلى مجلد معين في حدث "إرسال". كالعادة لدينا dependency
على مثال Hello World Spring MVC.
إذن ، هذه هي الإضافات / التغييرات التي نحتاج إلى إجرائها في هذا المثال:
- ملف جديد: CrunchifyFileUploadController.java
- ملف جديد: CrunchifyFileUpload.java
- ملف جديد: uploadfile.jsp
- ملف جديد: uploadfilesuccess.jsp
- الملف المعدل: crunchify-servlet.xml
- ملفا جرة جديدان:
commons-io-2.4.jar
وcommons-fileupload-1.3.jar
هل لديك أي من الأسئلة أدناه؟ اذا انت في المكان الصحيح.
- مثال على تحميل ملفات متعددة جافا
- تحميل ملفات أو مجلدات متعددة
إليك هيكل المشروع النهائي ، لذا ستحصل على فكرة عن مكان إضافة الملفات.
لنبدأ الآن:
الخطوة 1) المتطلبات المسبقة:
https://crunchify.com/hello-world-example-spring-mvc-3-2-1/ (انشر هذا المشروع بنجاح على Tomcat)
تبعيات المخضرم:
أضف أدناه التبعيات الجديدة إلى ملف pom.xml
الخاص بمشروعك.
1 2 3 4 5 6 7 8 9 10 |
< dependency > < groupId > commons - fileupload < / groupId > < artifactId > commons - fileupload < / artifactId > < version > 1.2 < / version > < / dependency > < dependency > < groupId > commons - io < / groupId > < artifactId > commons - io < / artifactId > < version > 1.4 < / version > < / dependency > |
الخطوة 2) SpringController
قم بإنشاء وحدة تحكم تستند إلى Spring 3 MVC والتي تتولى تحميل الملف. هناك طريقتان في وحدة التحكم هذه:
-
crunchifyDisplayForm
- يقوم ببساطة بإعادة توجيه الطلب إلى pageuploadfile.jsp -
crunchifySave
- يجلب النموذج باستخدام التعليق التوضيحي@ModelAttribute
ويحصل على محتوى الملف منه. يقوم بإنشاء قائمة بأسماء الملفات للملفات التي يتم تحميلها وتمرير هذه القائمة إلى صفحة النجاح.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
package com . crunchify . controller ; import com . crunchify . form . CrunchifyFileUpload ; import java . io . File ; import java . io . IOException ; import java . util . ArrayList ; import java . util . List ; import org . springframework . stereotype . Controller ; import org . springframework . ui . Model ; import org . springframework . web . bind . annotation . ModelAttribute ; import org . springframework . web . bind . annotation . RequestMapping ; import org . springframework . web . bind . annotation . RequestMethod ; import org . springframework . web . multipart . MultipartFile ; @Controller public class CrunchifyFileUploadController { @RequestMapping ( value = "/upload" , method = RequestMethod . GET ) public String crunchifyDisplayForm ( ) { return "uploadfile" ; } @RequestMapping ( value = "/savefiles" , method = RequestMethod . POST ) public String crunchifySave ( @ModelAttribute ( "uploadForm" ) CrunchifyFileUpload uploadForm , Model map ) throws IllegalStateException , IOException { String saveDirectory = "c:/crunchify/" ; List <MultipartFile> crunchifyFiles = uploadForm . getFiles ( ) ; List <String> fileNames = new ArrayList <String> ( ) ; if ( null ! = crunchifyFiles && crunchifyFiles.size() > 0) { for (MultipartFile multipartFile : crunchifyFiles) { String fileName = multipartFile.getOriginalFilename(); if ( ! "" . equalsIgnoreCase ( fileName ) ) { // Handle file content - multipartFile.getInputStream() multipartFile . transferTo ( new File ( saveDirectory + fileName ) ) ; fileNames . add ( fileName ) ; } } } map . addAttribute ( "files" , fileNames ) ; return "uploadfilesuccess" ; } } |
الخطوة 3) النموذج - كائن النموذج
قم بإنشاء حبة Java التي تعمل ككائن نموذج / نموذج لتطبيق Spring الخاص بنا. تحتوي هذه الوحدة على List
كائنات org.springframework.web.multipart.MultipartFile
. يوفر إطار الربيع فئة مفيدة MultipartFile يمكن استخدامها لجلب محتوى الملف للملف الذي تم تحميله. بصرف النظر عن محتواه ، يمنحك كائن MultipartFile أيضًا معلومات مفيدة أخرى مثل اسم الملف وحجم الملف وما إلى ذلك.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
package com . crunchify . form ; import java . util . List ; import org . springframework . web . multipart . MultipartFile ; public class CrunchifyFileUpload { private List <MultipartFile> crunchifyFiles ; public List <MultipartFile> getFiles ( ) { return crunchifyFiles ; } public void setFiles ( List <MultipartFile> files ) { this . crunchifyFiles = files ; } } |
الخطوة 4) طرق عرض JSP
الآن قم بإنشاء صفحات العرض لهذا التطبيق. سنحتاج إلى ملفي JSP ، أحدهما لعرض نموذج تحميل الملف والآخر لإظهار النتيجة عند التحميل الناجح.
يعرض uploadfile.jsp
نموذجًا به إدخال ملف. بصرف النظر عن هذا ، قمنا بإضافة مقتطف مسج صغير بنقرة زر إضافة. سيؤدي هذا إلى إضافة مكون إدخال ملف جديد في نهاية النموذج. هذا يسمح للمستخدم بتحميل أي عدد يريده من الملفات.
لاحظ أننا قمنا بتعيين enctype=”multipart/form-data”
لعلامة <form>
الخاصة بنا.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
<% @ taglib uri = "http://www.springframework.org/tags/form" prefix = "form" %> < html > < head > < title > Crunchify - Spring MVC Upload Multiple Files Example < / title > <script src = "http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js" > </script> <script> $ ( document ) . ready ( function ( ) { //add more file components if Add is clicked $ ( '#addFile' ) . click ( function ( ) { var fileIndex = $ ( '#fileTable tr' ) . children ( ) . length - 1 ; $ ( '#fileTable' ) . append ( '<tr><td>' + ' <input type="file" name="files[' + fileIndex + ']" />' + '</td></tr>' ) ; } ) ; } ) ; </script> <style type ="text/css"> body { background-image : url ( 'https://cdn.crunchify.com/wp-content/uploads/2013/03/Crunchify.bg_.300.png' ) ; } </style> < / head > < body > < br > < br > < div align = "center" > < h1 > Crunchify - Spring MVC Upload Multiple Files Example < / h1 > < form : form method = "post" action = "savefiles.html" modelAttribute = "uploadForm" enctype = "multipart/form-data" > < p > Select files to upload . Press Add button to add more file inputs . < / p > < table id = "fileTable" > < tr > < td > < input name = "files[0]" type = "file" / > < / td > < / tr > < tr > < td > < input name = "files[1]" type = "file" / > < / td > < / tr > < / table > < br / > < input type = "submit" value = "Upload" / > < input id = "addFile" type = "button" value = "Add File" / > < / form : form > < br / > < / div > < / body > < / html > |

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<% @ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %> < html > < head > < title > Crunchify - Upload Multiple Files Example < / title > <style type ="text/css"> body { background-image : url ( 'https://cdn.crunchify.com/wp-content/uploads/2013/03/Crunchify.bg_.300.png' ) ; } </style> < / head > < body > < br > < br > < div align = "center" > < h1 > Crunchify - Spring MVC Upload Multiple Files Example < / h1 > < p > Awesome . . Following files are uploaded successfully . < / p > < ol > < c : forEach items = "${files}" var = "file" > - $ { file } < br > < / c : forEach > < / ol > < a href = "http://localhost:8080/CrunchifySpringMVC3.2.1/upload.html" > < input type = "button" value = "Go Back" / > < / a > < br / > < br / > < br / > < div style = "font-family: verdana; line-height: 25px; padding: 5px 10px; border-radius: 10px; border: 1px dotted #A4A4A4; width: 50%; font-size: 12px;" > Spring MVC Upload Multiple Files Example by < a href = 'https://crunchify.com' > Crunchify < / a > . Click < a href = 'https://crunchify.com/category/java-tutorials/' > here < / a > for all Java , Spring MVC , Web Development examples . < br > < / div > < / div > < / body > < / html > |
الخطوة 5) تحديث تكوين الربيع
أضف الفول أدناه إلى ملف crunchify-servlet.xml
، أعلى سطر <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
.
1 2 |
< bean id = "multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" / > |
الخطوة 6) نتيجة الخروج
ابدأ Tomcat ووجه المستعرض الخاص بك إلى عنوان URL هذا: http: // localhost: 8080 / CrunchifySpringMVC3.2.1 / upload.html وسترى شاشة مشابهة لهذه.
بعد تحميل الملف سترى رسالة نجاح مثل هذه. يمكنك دائمًا تجميل ملف .jsp الخاص بك بالطريقة التي تريدها.
قائمة بجميع أمثلة Spring MVC ، أمثلة Java.