栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC上传文件FileUpload使用方法详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC上传文件FileUpload使用方法详解

本文实例为大家分享了SpringMVC上传文件FileUpload的具体代码,供大家参考,具体内容如下

我是在已经搭建好的springMVC环境下,maven工程中的pom.xml所需要的jar包(其中spring上传文件的两个主要jar:commons-fileupload.jar和commons-io.jar):


  4.0.0
  com.zhihua
  SpringMVC_FileUpload
  war
  0.0.1-SNAPSHOT
  SpringMVC_FileUpload Maven Webapp
  http://maven.apache.org
  
    
    3.2.8.RELEASE
    
    4.10
  
  
    
      junit
      junit
      3.8.1
      test
    
    
    
      commons-fileupload
      commons-fileupload
      1.3.1
    
    
    
      org.springframework
      spring-core
      ${spring.version}
    
    
      org.springframework
      spring-webmvc
      ${spring.version}
    
    
      org.springframework
      spring-context
      ${spring.version}
    
    
      org.springframework
      spring-context-support
      ${spring.version}
    
    
      org.springframework
      spring-aop
      ${spring.version}
    
    
      org.springframework
      spring-aspects
      ${spring.version}
    
    
      org.springframework
      spring-tx
      ${spring.version}
    
    
      org.springframework
      spring-jdbc
      ${spring.version}
    
    
      org.springframework
      spring-web
      ${spring.version}
    
    
    
      org.springframework
      spring-test
      ${spring.version}
      test
    
    
    
      jstl
      jstl
      1.2
    
    
    
      javax.servlet
      javax.servlet-api
      3.0.1
      provided
    
    
    
      javax.servlet.jsp
      jsp-api
      2.1
      provided
    
  
  
    SpringMVC_FileUpload
  

在spring-mvc.xml中添加代码:


  
    
    
    
  

前端页面(fileUpload.jsp)和上传成功返回页面(success.jsp):

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




springmvc-文件上传


  采用流的方式上传文件
  
  
采用multipart提供的file.transfer方法上传文件1
采用multipart提供的file.transfer方法上传文件2
使用spring MVC提供的方法上传文件

<%@ page language="java" contentType="text/html; charset=UTF-8"
  pageEncoding="UTF-8"%>




Insert title here


  文件上传成功!


controller 的代码:

package com.zhihua.controller;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Date;
import java.util.Iterator;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;

@Controller
@RequestMapping("/fileUpload")
public class FileUploadController {

  
  @RequestMapping("/upload_01")  
  public String fileUpload_1(@RequestParam("file_01")CommonsMultipartFile file)throws IOException {
    //用来检测程序运行时间
    long startTime = System.currentTimeMillis();
    System.out.println("fileName:"+file.getOriginalFilename());

    try{
      //获取输出流
      OutputStream os = new FileOutputStream("E:/"+new Date().getTime()+file.getOriginalFilename());
      //获取输入流CommonsMultipartFile中可以直接得到文件的流
      InputStream is = file.getInputStream();
      int temp;
      //一个一个字节的读取并写入
      while((temp=is.read())!=(-1)){
 os.write(temp);
      }
      os.flush();
      os.close();
      is.close();
    }catch(Exception e){
      e.printStackTrace();
    }
    long endTime = System.currentTimeMillis();
    System.out.println("方法一的运行时间:"+String.valueOf(endTime-startTime)+"ms");
    return "view/success";
  }

  
  @RequestMapping("/upload_02")
  public String fileUpload_2(@RequestParam("file_02") CommonsMultipartFile file)throws IOException {
    long startTime = System.currentTimeMillis();
    System.out.println("fileName:"+file.getOriginalFilename());
    String path = "E:/"+new Date().getTime()+file.getOriginalFilename();

    File newFile = new File(path);
    //通过CommonsMultipartFile 的方法直接写文件
    file.transferTo(newFile);
    long endTime = System.currentTimeMillis();
    System.out.println("方法二的运行时间:"+String.valueOf(endTime-startTime)+"ms");
    return "view/success";    
  }

  
  @RequestMapping("/upload_03")
  public String fileUpload_3(@RequestParam(value="file_03",required=false)MultipartFile file,
      HttpServletRequest request){
    String path = request.getSession().getServletContext().getRealPath("upload");
    System.out.println(path);
    String fileName = file.getOriginalFilename();
    File targetFile = new File(path,fileName);
    if(!targetFile.exists()){
      targetFile.mkdirs();
    }
    //保存
    try {
      file.transferTo(targetFile);
    }catch(Exception e){
      e.printStackTrace();
    }
    return "view/success";
  }

  
  @RequestMapping("/upload_spring")
  public String springUpload(HttpServletRequest request)throws IllegalStateException, IOException{
    long startTime = System.currentTimeMillis();
    //将当前上下文初始化给 CommonsMutipartResolver (多部分解析器)
    CommonsMultipartResolver multipartResolver = new CommonsMultipartResolver(request.getSession().getServletContext());
    //检查form中是否有enctype="multipart/form-data"
    if(multipartResolver.isMultipart(request))
    {
      //将request变成多request
      MultipartHttpServletRequest multiRequest = (MultipartHttpServletRequest)request;
      //获取multiRequest中所有的文件名
      Iterator iter = multiRequest.getFileNames();

      while(iter.hasNext()){
 //一次遍历所有的文件
 MultipartFile file = multiRequest.getFile(iter.next().toString());
 if(file!=null){
   String path = "E:/springUpload"+file.getOriginalFilename();
   //上传
   file.transferTo(new File(path));
 }
      }
    }
    long endTime = System.currentTimeMillis();
    System.out.println("方法三的运行时间:"+String.valueOf(endTime-startTime)+"ms");    
    return "view/success";
  }

}

好了,全部代码都给出了,博主是测试成功了,感兴趣的朋友可以去比较不同上传方式的效率!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/143090.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号