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

Exemplo de upload de arquivo Spring MVC

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.

Arquivos jar necessários

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

Passos para o upload de arquivo no Spring MVC (sem MVC)

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

Exemplo de upload de arquivo Spring MVC

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.