English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Spring MVC propose une méthode simple pour télécharger des fichiers, qui peuvent être des images ou d'autres fichiers. regardons un exemple simple de téléchargement de fichier avec Spring MVC.
Pour exécuter cet exemple, vous devez charger :
Fichiers jar Spring Core Fichiers jar Spring Web commons-fileupload.jar et commons-io.jar
1) Télécharger tous les fichiers jar de Spring, y compris core, web, aop, mvc, j2ee, traitement à distance, oxm, jdbc, orm, etc.
2)Télécharger commons-io.jar
3)Télécharger Commons -fileupload.jar
1)Ajouter commons-io et le fichier jar fileupload.jar
2)Ajouter l'entrée spring-servlet.xml de CommonsMultipartResolver
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
3)Créer un formulaire pour soumettre un fichier. Le nom de la méthode doit être "post" et saisir " multiple/form-data"。
<form action="savefile" method="post" enctype="multipart/form-data"> Select File: <input type="file" name="file"/> <input type="submit" value="Upload File"/> </form>
4)Utiliser la classe CommonsMultipartFile dans le Controller.
@RequestMapping(value="/savefile",method=RequestMethod.POST) public ModelAndView upload(@RequestParam CommonsMultipartFile file,HttpSession session){ String path=session.getServletContext().getRealPath("/"); String filename=file.getOriginalFilename(); System.out.println(path+" "+filename); try{ byte barr[]=file.getBytes(); BufferedOutputStream bout=new BufferedOutputStream( new FileOutputStream(path+"/"+filename)); bout.write(barr); bout.flush(); bout.close(); }){catch(Exception e){System.out.println(e);} return new ModelAndView("upload-success","filename",path+"/"+filename); }
5)S'afficher une image dans JSP.
<h1>Upload Success</h1> <img src="${filename}"/>
Créer le répertoire d'images
Créez un répertoire "images" dans votre projet, car nous écrivons un code qui sauvegardera tous les fichiers dans "/images" répertoire.
index.jsp
<a href="uploadform">Upload Image</a>
Emp.java
package com.w;3codebox; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import javax.servlet.ServletContext; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.fileupload.disk.DiskFileItemFactory; import org.apache.commons.fileupload.servlet.ServletFileUpload; import org.springframework.stereotype.Controller; 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.bind.annotation.RequestParam; import org.springframework.web.multipart.commons.CommonsMultipartFile; import org.springframework.web.servlet.ModelAndView; @Controller public class HelloController { private static final String UPLOAD_DIRECTORY = "/images"; @RequestMapping("uploadform") public ModelAndView uploadForm(){ return new ModelAndView("uploadform"); } @RequestMapping(value="savefile",method=RequestMethod.POST) public ModelAndView saveimage(@RequestParam CommonsMultipartFile file, HttpSession session) throws Exception{ ServletContext context = session.getServletContext(); String path = context.getRealPath("UPLOAD_DIRECTORY"); String filename = file.getOriginalFilename(); System.out.println(path+" "+filename); byte[] bytes = file.getBytes(); BufferedOutputStream stream = new BufferedOutputStream(new FileOutputStream( new File(path + File.separator + filename))); stream.write(bytes); stream.flush(); stream.close(); return new ModelAndView("uploadform","filesuccess","Fichier sauvegardé avec succès!"); } }
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
spring-servlet.xml
Ici, vous devez créer un bean pour CommonsMultipartResolver.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.w3codebox"></context:component-scan> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/></property> <property name="suffix" value=".jsp"></property> </bean> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/> </beans>
uploadform.jsp
Le formulaire doit être de type method ="post" et enctype ="multipart/form-data"。
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"> <!DOCTYPE html> <html> <head> <title>Téléversement de fichier image</title> </head> <body> <h1>Exemple de téléversement de fichier - w3codebox/h1> <h3 style="color:red">${filesuccess}</h3> <form:form method="post" action="savefile" enctype="multipart/form-data"> <p><label for="image">Choisir Image</label></p> <p><input name="file" id="fileToUpload" type="file" /></p> <p><input type="submit" value="Upload"></p> </form:form> </body> </html>
Sortie
Aller à l'adresse affichée sur le contrôle du serveur pour voir le fichier téléversé.