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

Spring MVC Datei-Upload Beispiel

Spring MVC bietet eine einfache Methode zum Hochladen von Dateien, die Bilder oder andere Dateien sein können. Lassen Sie uns ein einfaches Beispiel für das Hochladen von Dateien mit Spring MVC sehen.

Erforderliche Jar-Dateien

Um dieses Beispiel auszuführen, müssen Sie laden:

Spring Core jar-Datei Spring Web jar-Datei commons-fileupload.jar und commons-io.jar-Datei

1Laden Sie alle jar-Dateien von Spring herunter, einschließlich core, web, aop, mvc, j2ee, Remote Processing, oxm, jdbc, orm und andere.

2) herunterladen commons-io.jar

3) herunterladen Commons -fileupload.jar

Schritte zur Dateiupload-Funktion von Spring MVC (ohne MVC)

1) hinzufügen commons-io und fileupload.jar-Datei

2) hinzufügen spring-servlet.xml im CommonsMultipartResolver

<bean id="multipartResolver" 
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

3) ein Formular erstellen, um Dateien einzufügen. Der Methodenname muss "post" sein und "multiple" eingeben/form-data"。

<form action="savefile" method="post" enctype="multipart/form-data">
Datei auswählen: <input type="file" name="file"/>
<input type="submit" value="Upload File"/>
</form>

4) im Controller die CommonsMultipartFile-Klasse verwenden.

@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) im JSP angezeigt.

<h1>Upload Success</h1>
<img src="${filename}"/>

Spring MVC Datei-Upload Beispiel

Erstellen Sie das Bilder-Verzeichnis

Erstellen Sie im Projektverzeichnis "Bilder", da wir schreiben, dass alle Dateien in "/images" Verzeichnis.

index.jsp

<a href="uploadform">Upload Image</a>/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","Datei wurde erfolgreich gespeichert!");
    }
}

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

Hier müssen Sie einen Bean für CommonsMultipartResolver erstellen.

<?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

Das Formular muss method = "post" und enctype = "multipart" haben/form-data"。

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
 
<!DOCTYPE html>
<html>
 <head>
 <title>Bild Datei Upload</title>
 </head>
 <body>
<h1>Datei Upload Beispiel - w3codebox</h1>
<h3 style="color:red">${filesuccess}</h3>
<form:form method="post" action="savefile" enctype="multipart/form-data">
<p><label for="image">Wählen Sie Bild</label></p>
<p><input name="file" id="fileToUpload" type="file" /></p>
<p><input type="submit" value="Upload"></p>
</form:form>
</body>
</html>

Ausgabe

Gehen Sie zum Pfad, der auf dem Serverkontroll台上 gedruckt wird, um die hochgeladenen Dateien anzuzeigen.