English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
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
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}"/>
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.