Spring MVC Kullanarak Birden Çok Dosyayı Belirli Bir Konuma Nasıl Yükleyebilirim? Java koduyla Eğitimi Tamamlayın
Yayınlanan: 2013-06-22 Bu, Upload formundaki dosyayı kabul eden ve “Submit” etkinliğinde belirli bir klasöre kopyalayan başka bir eksiksiz Spring MVC öğreticisidir. Her zamanki gibi Hello World Spring MVC Örneğine dependency
var.
Yani, bu örnekte yapmamız gereken eklemeler/değişiklikler şunlardır:
- Yeni dosya: CrunchifyFileUploadController.java
- Yeni dosya: CrunchifyFileUpload.java
- Yeni dosya: uploadfile.jsp
- Yeni dosya: uploadfilesuccess.jsp
- Değiştirilmiş dosya: crunchify-servlet.xml
- 2 yeni jar dosyası:
commons-io-2.4.jar
vecommons-fileupload-1.3.jar
Aşağıdaki sorudan herhangi biri var mı? O halde doğru yerdesiniz.
- Java Çoklu Dosya Yükleme Örneği
- Birden Fazla Dosya veya Klasör Yükleyin
İşte son bir proje yapısı, böylece dosyaları nereye ekleyeceğiniz konusunda bir fikir edineceksiniz.
Şimdi başlayalım:
Adım-1) Ön Koşul:
https://crunchify.com/hello-world-example-spring-mvc-3-2-1/ (Bu projeyi Tomcat'te başarıyla dağıtın)
Maven Bağımlılıkları:
Projenizin pom.xml
dosyasına aşağıdaki yeni bağımlılıkları ekleyin.
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 > |
Adım-2) Yay Denetleyicisi
Dosya yüklemeyi yöneten Spring 3 MVC tabanlı bir denetleyici oluşturun. Bu denetleyicide iki yöntem vardır:
-
crunchifyDisplayForm
– İsteği sadece pageuploadfile.jsp dosyasına iletir -
crunchifySave
– Formu@ModelAttribute
ek açıklamasını kullanarak getirir ve ondan Dosya içeriğini alır. Yüklenen dosyaların dosya adlarının bir listesini oluşturur ve bu listeyi başarı sayfasına iletir.
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" ; } } |
Adım-3) Model – Form Nesnesi
Spring uygulamamız için Model/Form nesnesi görevi gören bir Java çekirdeği oluşturun. Bu çekirdek, org.springframework.web.multipart.MultipartFile
nesnelerinin bir List
içerir. Spring çerçevesi, yüklenen dosyanın dosya içeriğini getirmek için kullanılabilecek kullanışlı bir MultipartFile sınıfı sağlar. MultipartFile nesnesi, içeriğinin yanı sıra size dosya adı, dosya boyutu vb. gibi başka yararlı bilgiler de verir.
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 ; } } |
Adım-4) JSP Görünümleri
Şimdi bu uygulama için görünüm sayfalarını oluşturun. İki JSP'ye ihtiyacımız olacak, biri dosya yükleme formunu görüntülemek için diğeri de başarılı yüklemenin sonucunu göstermek için.
uploadfile.jsp
, dosya girişi olan bir form görüntüler. Bunun dışında Ekle butonuna tıklandığında küçük bir jquery parçacığı ekledik. Bu, formun sonuna yeni bir dosya giriş bileşeni ekleyecektir. Bu, kullanıcının istediği kadar dosya yüklemesine izin verir.
<form>
enctype=”multipart/form-data”
özniteliğini belirlediğimizi unutmayın.
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 > |
Adım-5) Yay Yapılandırmasını Güncelleyin
crunchify-servlet.xml
dosyasına <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
satırının hemen üstüne ekleyin.
1 2 |
< bean id = "multipartResolver" class = "org.springframework.web.multipart.commons.CommonsMultipartResolver" / > |
Adım-6) Ödeme Sonucu
Tomcat'i başlatın ve tarayıcınızı şu URL'ye yönlendirin: http://localhost:8080/CrunchifySpringMVC3.2.1/upload.html ve buna benzer bir ekran görmelisiniz.
Dosya yükledikten sonra bunun gibi bir başarı mesajı göreceksiniz. .jsp dosyanızı istediğiniz gibi güzelleştirebilirsiniz.
Tüm Spring MVC Örneklerinin listesi, Java Örnekleri.