Spring MVC - MultipartFile 实现浏览器端超大文件的上传

 一、首先加依赖包

       <!-- 上传组件包 -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.1</version>
        </dependency>

二、在springMCV配置文件中配置如下:

<!-- 配置文件上传,如果没有使用文件上传可以不用配置,当然如果不配,那么配置文件中也不必引入上传组件包 -->
	<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 默认编码 -->
		<property name="defaultEncoding" value="UTF-8" />
		<!-- 文件大小最大值 -->
		<property name="maxUploadSize" value="10485760000" />
		<!-- 内存中的最大值 -->
		<property name="maxInMemorySize" value="40960" />
		<!-- 指定上传文件的临时路径 -->
		<!-- <property name="uploadTempDir" value="uploadTempDirectory" /> -->
	</bean>

三、可在JSP页面选择一个div容器,自己加样式,这里简单写个multipart/form-data表单上传

<div>
        <form class="upload" action="/upload/fileUpload" method="post" enctype="multipart/form-data">
            <p>
                选择文件:<input type="file" name="multipartFile"/>
            </p>
            <p></p>
            <p style="margin-top: 20px;">
                <input style="" type="submit" value="上传并检测"/> 
            </p>
        </form>
    </div>

四,action的url会访问到你的后台,进到服务器接收文件:

package com.ye_0809.controller;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;

import javax.servlet.http.HttpServletRequest;

/**
 * Created by van on 2017-07-18.
 */
@Controller
@RequestMapping("/upload")
public class userUploadController {
    @Value("#{prop.uploadDir}")
    private String uploadDir;

    //单文件上传
    @RequestMapping("/toFileUpload")
    public String toUpload(){
        return "upload/fileUpload";
    }


    @RequestMapping("fileUpload")
    @ResponseBody
    public String upload(MultipartFile multipartFile,HttpServletRequest request, Model model){
        if(!multipartFile.isEmpty()){
            //设置文件的保存路径      
            //filepath= Utils.format(filepath);
            String filePath = request.getServletContext().getRealPath("/")+uploadDir+"/" + multipartFile.getOriginalFilename();
            File files=new File(filePath);
            System.out.println("打印文件保存位置:"+filePath);
            //转存文件
            try {
                multipartFile.transferTo(new File(filePath));
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
        return "success";
    }

    //多文件上传
    @RequestMapping("/toFileUploadFiles")
    public String toUploadFiles(){
        return "fileUpload/fileUploadFiles";
    }

    @RequestMapping("fileUploadFiles")
    @ResponseBody
    //此处用@RequestParam("xx")来指定参数名,不加会报错
    public String uploadFiles(@RequestParam("multipartFile") MultipartFile[] multipartfiles) throws IOException {
        String savePath = "D:\\MultipartFile\\";
        if(multipartfiles != null && multipartfiles.length != 0){
            if(null != multipartfiles && multipartfiles.length > 0){
                //遍历并保存文件
                for(MultipartFile file : multipartfiles){
                    file.transferTo(new File(savePath + file.getOriginalFilename()));
                }
            }
        }
        return "success";
    }
}

五,这个刚做功能比较简单,自己可以加样式和具体细节的功。

猜你喜欢

转载自blog.csdn.net/u012310865/article/details/81706045