SpringMVC에서 파일을 업로드하는 세 가지 방법

6606 단어 springmvc업로드
SpringMVC가 파일을 업로드하는 세 가지 구현 방식, 코드를 직접 입력하세요.
포그라운드 태스크:

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

  pageEncoding="utf-8"%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>Insert title here</title>

</head>

<body>

<form name="serForm" action="/SpringMVC006/fileUpload" method="post" enctype="multipart/form-data">

<h1> </h1>

<input type="file" name="file">

<input type="submit" value="upload"/>

</form>

<form name="Form2" action="/SpringMVC006/fileUpload2" method="post" enctype="multipart/form-data">

<h1> multipart file.transfer </h1>

<input type="file" name="file">

<input type="submit" value="upload"/>

</form>

<form name="Form2" action="/SpringMVC006/springUpload" method="post" enctype="multipart/form-data">

<h1> spring mvc </h1>

<input type="file" name="file">

<input type="submit" value="upload"/>

</form>

</body>

</html> 
구성:

<!--   -->

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

   <property name="maxUploadSize" value="104857600" />

   <property name="maxInMemorySize" value="4096" />

   <property name="defaultEncoding" value="UTF-8"></property>

</bean> 
백그라운드:
방식 1:

/*

   *  

   * @RequestParam("file")  name=file CommonsMultipartFile  

   */

  @RequestMapping("fileUpload")

  public String fileUpload(@RequestParam("file") 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 (FileNotFoundException e) {

      // TODO Auto-generated catch block

      e.printStackTrace();

    }

    long endTime=System.currentTimeMillis();

    System.out.println(" :"+String.valueOf(endTime-startTime)+"ms");

    return "/success"; 

  } 
방식 2:

/*

   *  file.Transto  

   */

  @RequestMapping("fileUpload2")

  public String fileUpload2(@RequestParam("file") 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 "/success"; 

  } 

방식 3:

/*

   * spring 

   */

  @RequestMapping("springUpload")

  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 "/success"; 

  } 

테스트 업로드 시간을 살펴보겠습니다.
처음으로 4M 파일을 사용했습니다.
fileName:test.rar
메소드 1의 운행 시간: 14712ms
fileName:test.rar
방법2의 운행 시간: 5ms
메서드 3의 운행 시간: 4ms
두 번째: 50M 파일을 사용합니다.
방식은 진도가 매우 느려서 5분이 걸릴 것 같다
방법2의 운행 시간: 67ms
메서드 3의 운행 시간: 80ms
테스트 결과에서 알 수 있듯이springMVC가 가지고 있는 파일을 업로드하는 방법이 훨씬 빠르다!
테스트 2의 결과: 방법 3은 하나씩 검색해야 하기 때문에 천천히 해야 한다.그러나 일반적인 상황에서 우리는 방법 3이다. 왜냐하면 그는 우리에게 더 많은 방법을 제공할 수 있기 때문이다
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.

좋은 웹페이지 즐겨찾기