English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
O Spring MVC oferece um método conveniente para upload de arquivos, que pode ser uma imagem ou outro arquivo. Vamos ver um exemplo simples de upload de arquivo usando Spring MVC.
Para executar este exemplo, você precisa carregar:
Arquivos jar do Spring Core Arquivos jar do Spring Web commons-fileupload.jar e commons-io.jar
1) Baixe todos os arquivos jar do Spring, incluindo core, web, aop, mvc, j2ee, processamento remoto, oxm, jdbc, orm e outros.
2)Baixe o commons-io.jar
3)Baixe o Commons -fileupload.jar
1)Adicione o commons-io e o arquivo fileupload.jar
2)Adicione a entrada spring-servlet.xml com o CommonsMultipartResolver
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
3)Crie o formulário para enviar o arquivo. O nome do método deve ser "post" e digite " multiple/form-data"。
<form action="savefile" method="post" enctype="multipart/form-data"> Selecione o Arquivo: <input type="file" name="file"/> <input type="submit" value="Upload File"/> </form>
4)Usar a classe CommonsMultipartFile no 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)Mostrar imagem no JSP.
<h1>Upload Success</h1> <img src="${filename}"/>
Criar diretório de imagens
Crie um diretório "imagens" no seu projeto, pois estamos escrevendo para que todos os arquivos sejam salvos em"/images" diretório de código.
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","Arquivo salvo com sucesso!"); } }
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
Aqui, você precisa criar um bean para 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
Este formulário deve ser method ="post" e enctype ="multipart/form-data"。
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"> <!DOCTYPE html> <html> <head> <title>Upload de Arquivo de Imagem</title> </head> <body> <h1>Exemplo de Upload de Arquivo - w3codebox/h1> <h3 style="color:red">${filesuccess}</h3> <form:form method="post" action="savefile" enctype="multipart/form-data"> <p><label for="image">Escolha Imagem</label></p> <p><input name="file" id="fileToUpload" type="file" /></p> <p><input type="submit" value="Upload"></p> </form:form> </body> </html>
Saída
Vá para o caminho impresso no console do servidor para ver o arquivo carregado.