Bu yazımda sizlere
Spring MVC ile file upload işleminden bahsedeceğim. Bu işlem
Spring MVC de multipart request lerin handle edilme işlemidir. Bu
multipart request leri handle etmenin 2 yolu vardır.
1.
StandartServletMultipartResolver
Servlet 3.0 ın
sunduğu bir özellik olup , uygulamada ki Servlet sürümünün 3.0
veya üzeri olmasını gerektirir.
2.
CommonsMultipartResolver
Jakarta commons
FileUpload kullanarak multipart requestleri çözer.
Şimdilik 2.yolu
kullanarak dosya yükleme işlemini gerçekleştireceğiz. Bunun için
pom.xml dosyamıza aşağıda ki satırları eklememiz gerekmektedir.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
</dependency>
<!--
Spring MVC framework -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>2.5.6</version>
</dependency>
<!--
Apache Commons Upload -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.2.2</version>
</dependency>
<!--
Apache Commons Upload -->
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>1.3.2</version>
</dependency>
<!--
JSTL -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.1.2</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
Bunları ekledikten
sonra DispatcherServlet classımıza temp dosyalarının tutulacağı
yeri göstermek maksadı ile aşağıda ki metodu eklememiz
gerekiyor.
@Override
protected
void
customizeRegistration(Dynamic registration) {
registration.addMapping("/");
registration.setMultipartConfig(new MultipartConfigElement("/home/mesud/springtemp",2097152,
4194304, 0));
}
Artık JSP sayfamızı
ve Controller classımızı yazabiliriz.
fileUpload.jsp
<%@
page
language="java"
contentType="text/html;
charset=UTF-8"
isELIgnored="false"%>
<%@
taglib
uri="http://www.springframework.org/tags"
prefix="s"
%>
<div
class="body">
<h1>Resim
Yükleme Formu</h1>
<form
method="POST"
enctype="multipart/form-data">
<label>Profil
Resmi : </label>
<input
type="file"
name="profilResim"
accept="image/jpeg,image/png,image/gif"
/>
<br/>
<input
type="submit"
value="<s:message
code="register.save"/>"
/>
<br/>
<strong>
${uploadFileName}
</strong>
</form>
</div>
FileUploadController.java
package
com.mesutemre.controller;
import
java.io.BufferedOutputStream;
import
java.io.File;
import
java.io.FileOutputStream;
import
org.springframework.stereotype.Controller;
import
org.springframework.ui.Model;
import
org.springframework.util.FileCopyUtils;
import
org.springframework.web.bind.annotation.RequestMapping;
import
org.springframework.web.bind.annotation.RequestMethod;
import
org.springframework.web.bind.annotation.RequestParam;
import
org.springframework.web.multipart.MultipartFile;
@Controller
public
class
FileUploadController {
@RequestMapping(value
= "/fileUpload",
method = RequestMethod.GET)
public
String getFileUploadPage() {
return
"fileUpload";
}
@RequestMapping(value
= "/fileUpload",
method = RequestMethod.POST)
public
String uploadImageFile(
@RequestParam("profilResim")
MultipartFile file , Model model) {
if
(!file.isEmpty()) {
try
{
BufferedOutputStream
stream = new
BufferedOutputStream(
new
FileOutputStream(new
File("/home/mesud/springupload/"+file.getName())));
FileCopyUtils.copy(file.getInputStream(),
stream);
stream.close();
model.addAttribute("uploadFileName",
file.getName());
System.out.println(file.getName()+"
başarı ile yüklendi...");
System.out.println("Dosya
büyüklük : "+file.getSize());
} catch
(Exception e) {
e.printStackTrace();
}
}
else
{
System.err.println("Boş
dosya...");
}
return
"fileUpload";
}
}
Yükleme ekranımız
aşağıda ki gibi olur.
Bir sonraki yazıda görüşmek üzere hoşçakalın.
Hiç yorum yok:
Yorum Gönder