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이다. 왜냐하면 그는 우리에게 더 많은 방법을 제공할 수 있기 때문이다
이상은 본문의 전체 내용입니다. 여러분의 학습에 도움이 되고 저희를 많이 응원해 주십시오.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
springmvc application/octet-stream problemmistake: Source code: Solution: Summarize: application/octet-stream is the original binary stream method. If the convers...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.