English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Exemple de téléversement de fichiers Spring MVC

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.

Fichiers jar nécessaires

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

Étapes de téléversement de fichier Spring MVC (sans MVC)

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}"/>

Exemple de téléversement de fichiers Spring MVC

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é.