利用 Spring MVC 上传多文件到指定目录 spring upload files

本篇文章,我们会教你通过eclipse构建一个创建一个Java web项目并转为maven工程,实现用spring mvc将所选文件上传到指定目录
开发环境:
1.JDK 1.7
2.Maven 3.3.9
3.Eclipse Mars.1
4.Spring 4.2.1.RELEASE
5.Spring MVC 4.2.1.RELEASE
6. Tomcat7

1.目录结构
利用 Spring MVC 上传多文件到指定目录 spring upload files_第1张图片
2. 创建项目
Eclipse - File - New - Dynamic Web Project 输入项目名称,然后右击该项目Configure-Convert to Maven project
在WebContent/WEB-INF下新建一个web.xml文件
3.pom.xml

  4.0.0
  org.thinkingingis
  SpringUploadFiles
  0.0.1-SNAPSHOT
  war
  
    src
    
      
        maven-compiler-plugin
        2.3.2
        
          1.7
          1.7
        
      
    
  
   
  	
  		org.springframework
  		spring-context
  		4.2.1.RELEASE
  	
  	
		org.springframework
		spring-aop
		4.2.1.RELEASE
	
	
		org.springframework
		spring-webmvc
		4.2.1.RELEASE
	
	
		org.springframework
		spring-web
		4.2.1.RELEASE
	
	
		javax.servlet
		jstl
		1.2
	
	
	
		commons-fileupload
		commons-fileupload
		1.2
	
	
	
		commons-io
		commons-io
		1.4
	
  
4. ThinkFileUpload.java
这个类用来存放 MultipartFile类型的对象,这是spring framework提供的一个用于接收所上传文件内容的类。
package org.thinkingingis.form;

import java.util.List;

import org.springframework.web.multipart.MultipartFile;

public class ThinkFileUpload {
	private List thinkFiles;
	 
    public List getFiles() {
        return thinkFiles;
    }
 
    public void setFiles(List files) {
        this.thinkFiles = files;
    }
}
5. FileUploadController.java 拥有两个方法

thinkDisplayForm -- 返回上传文件的页面

crunchifySave -- 用于接收文件并保存文件到指定目录,这里保存在/Users/gisboy/node/ 目录下

package org.thinkingingis.controller;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
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.multipart.MultipartFile;
import org.thinkingingis.form.ThinkFileUpload;

@Controller
public class FileUploadController {
	
	@RequestMapping(value = "/upload", method = RequestMethod.GET)
	public String thinkDisplayForm(){
		//从 index.jsp 拦截请求,请求名称为  : /upload
		return "uploadfile";
	}
	
    @RequestMapping(value = "/savefiles", method = RequestMethod.POST)
    public String crunchifySave(
            @ModelAttribute("uploadForm") ThinkFileUpload uploadForm,
            Model map) throws IllegalStateException, IOException {
       
    	//文件的存放路径
    	String saveDirectory = "/Users/gisboy/node/";
 
        List thinkFiles = uploadForm.getFiles();
 
        List fileNames = new ArrayList();
 
        if (null != thinkFiles && thinkFiles.size() > 0) {
            for (MultipartFile multipartFile : thinkFiles) {
 
                String fileName = multipartFile.getOriginalFilename();
                if (!"".equalsIgnoreCase(fileName)) {
                
                    multipartFile.transferTo(new File(saveDirectory + fileName));
                    fileNames.add(fileName);
                }
            }
        }
        map.addAttribute("files", fileNames);
        return "uploadfilesuccess";
    }
}
6.jsp文件

index.jsp



Spring Upload Files by ThinkingInGIS



	

Hey Buddy..!! This is a Spring MVC Demo

Click here to Jump to file upload page...


uploadfile.jsp

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>




上传文件







ThinkingInGIS - Spring MVC Upload Multiple Files Example

Select files to upload. Press Add button to add more file inputs.




uploadfilesuccess.jsp

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>


ThinkingInGIS - Upload Multiple Files Example



    

ThinkingInGIS - Spring MVC Upload Multiple Files Example

Following files are uploaded successfully.

    - ${file}



Spring MVC Upload Multiple Files Example by ThinkingInGIS. Click here to get source code.

7.web.xml



  SpringUploadFiles
  
    index.jsp
  
  
    
        springuploadfiles
        
            org.springframework.web.servlet.DispatcherServlet
        
        1
    
    
        springuploadfiles
        *.html
    
  

8.springuploadfiles-servlet.xml


 
	
 	
 	
 	
        
	
		
		
		
	
	
	
 

9.完成之后启动项目

在浏览器中输入 http://localhost:8080/SpringUploadFiles/

运行截图如下:

利用 Spring MVC 上传多文件到指定目录 spring upload files_第2张图片

点击链接 跳转到upload页面,选择待上传的文件

利用 Spring MVC 上传多文件到指定目录 spring upload files_第3张图片

文件上传成功页面:
利用 Spring MVC 上传多文件到指定目录 spring upload files_第4张图片
指定路径下的文件:
利用 Spring MVC 上传多文件到指定目录 spring upload files_第5张图片

至此,一个通过简单的利用spring mvc 上传多文件的小程序就完成啦。

源码地址: https://github.com/ThinkingInGIS/SpringUploadFiles
(如遇到问题,请留言给作者,以便共同探讨gis知识。 [email protected]
微信公众号:ThinkingInGIS
利用 Spring MVC 上传多文件到指定目录 spring upload files_第6张图片
欢迎大家关注:)

你可能感兴趣的:(java)