SpringMVC 단일 파일 업로드 와 다 중 파일 업로드 인 스 턴 스
자바 웹 프로젝트 에서 파일 업로드 기능 은 거의 없어 서 는 안 됩 니 다.저 는 프로젝트 개발 에서 도 자주 만 날 수 있 습 니 다.예전 에는 별로 신경 쓰 지 않 았 습 니 다.오늘 은 시간 이 나 면 이 분야 의 지식 을 배 웠 습 니 다.그래서 본인 이 배 운 SpringMVC 에서 단일 파일 과 다 중 파일 을 업로드 하 는 지식 을 필기 하 게 되 었 습 니 다.
파일 업로드
1.페이지
간단 한 폼 제출 을 예 로 들 어 파일 업로드 에 서 는 폼 의 제출 방법 을 post 로 설정 하고 enctype 의 값 을'multipart/form-data'로 설정 해 야 합 니 다.
<form action="${pageContext.request.contextPath}/test/upload.do" method="post" enctype="multipart/form-data">
<input type="file" name="img"><br />
<input type="submit" name=" ">
</form>
2.컨트롤 러Controller 의 처리 방법 에 서 는 MultipartFile 대상 을 매개 변수 로 전단 에 올 라 온 파일 을 받 습 니 다.구체 적 인 설명 은 코드 설명 을 보십시오.
@Controller
@RequestMapping("/test")
public class MyController {
@RequestMapping(value = "/upload.do", method = RequestMethod.POST)
// MultipartFile file input name , MultipartFile , @RequestParam("img")
public String upload(MultipartFile img, HttpSession session)
throws Exception {
// ,MultipartFile null, getSize()
if (img.getSize() > 0) {
// , :/home/tomcat/webapp/ /images
String path = session.getServletContext().getRealPath("images");
// , : .png
String fileName = img.getOriginalFilename();
// , , : jpg png
if (fileName.endsWith("jpg") || fileName.endsWith("png")) {
File file = new File(path, fileName);
img.transferTo(file);
return "/success.jsp";
}
}
return "/error.jsp";
}
}
3.springmvc.xml 설정MultipartFile 대상 을 사용 하여 전단 에 올 라 온 파일 을 받 으 려 면 springmvc 설정 파일 에서 다음 과 같은 설정 을 해 야 합 니 다.
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
...
<!-- :CommonsMultipartResolver id , multipartResolver, -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<!-- -->
<property name="defaultEncoding" value="utf-8"/>
<!-- , , 1M(1*1024*1024) -->
<property name="maxUploadSize" value="1048576"/>
<!-- maxUploadSize , maxUploadSizePerFile , maxUploadSize -->
<property name="maxUploadSizePerFile" value="1048576"/>
</bean>
<!-- , -->
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="defaultErrorView" value="/error.jsp"/>
</bean>
</beans>
위 설정 파일 에 있 는 Commons Multipart Resolver 의 속성 값 설정 은 필요 하지 않 습 니 다.모두 쓰 지 않 아 도 됩 니 다.여기까지 만 하면 하나의 파일 업로드 가 가능 합 니 다.다음은 다 중 파일 업 로드 를 살 펴 보 겠 습 니 다.3.다 중 파일 업로드
사실 다 중 파일 업로드 도 간단 하 다.단일 파일 업 로드 는 Controller 의 처리 방법 에서 MultipartFile 대상 을 매개 변수 로 전단 에 올 라 온 파일 을 받 고 다 중 파일 업 로드 는 MultipartFile 대상 배열 로 받는다.
1.페이지
이 페이지 에는 name 값 과 같은 file 형식의 input 태그 가 몇 개 있 으 며,다른 파일 이 올 린 페이지 와 다 르 지 않 습 니 다.
<form action="${pageContext.request.contextPath}/test/upload.do" method="post" enctype="multipart/form-data">
file 1 : <input type="file" name="imgs"><br />
file 2 : <input type="file" name="imgs"><br />
file 3 : <input type="file" name="imgs"><br />
<input type="submit" name=" ">
</form>
2.컨트롤 러컨트롤 러 의 처리 방법 은 MultipartFile[]배열 을 수신 매개 변수 로 사용 하고 직접 사용 할 수 없습니다.파 라 메 터 를 교정 해 야 합 니 다.구체 적 인 설명 은 코드 설명 을 보십시오.
@Controller
@RequestMapping("/test")
public class MyController {
@RequestMapping(value = "/upload.do", method = RequestMethod.POST)
// MultipartFile[] imgs ,imgs file input name, MultipartFile ,
// MultipartFile[] , [Lorg.springframework.web.multipart.MultipartFile;.<init>() ,
// @RequestParam ( MultipartFile ), :@RequestParam("imgs") MultipartFile[] files。
public String upload(@RequestParam MultipartFile[] imgs, HttpSession session)
throws Exception {
for (MultipartFile img : imgs) {
if (img.getSize() > 0) {
String path = session.getServletContext().getRealPath("images");
String fileName = img.getOriginalFilename();
if (fileName.endsWith("jpg") || fileName.endsWith("png")) {
File file = new File(path, fileName);
img.transferTo(file);
}
}
}
return "/success.jsp";
}
}
마찬가지 로 MultipartFile 배열 을 사용 하여 전단 에 올 라 온 여러 파일 을 받 고 springmvc 의 프로필 을 설정 해 야 합 니 다.구체 적 인 설정 은 상기 단일 파일 에 올 라 온 springmvc.xml 설정 과 다 르 지 않 으 므 로 직접 복사 하면 됩 니 다.이렇게 하면 여러 파일 을 업로드 할 수 있다.4.여러 파일 업로드 상황 종합
물론 프로젝트 개발 에서 장면 이 이렇게 간단 하지 않 을 수도 있 습 니 다.상기 다 중 파일 업 로드 는 하나의 파일 을 선택 한 후에 같이 업로드 하 는 것 입 니 다.(즉,여러 개의 name 같은 input 태그)제 프로젝트 에서 하나의 input 태그 만 있 으 면 한 번 에 여러 개의 파일 을 올 릴 수 있 습 니까?또는 한 페이지 에 하나씩 선택 한 다 중 파일 을 업로드 해 야 할 뿐만 아니 라 한꺼번에 선택 한 다 중 파일 을 업로드 해 야 할 뿐만 아니 라 단일 파일 도 업로드 해 야 할 까요?괜 찮 습 니 다.Multipart File[]통식,코드 도 쉬 워 요.다음은 바로 코드 를 올 립 니 다.
1.페이지
여기 있 는'한 번 에 여러 파일 을 선택 한 다 중 파일 업로드'는 input 탭 에 multiple 속성 을 추가 한 것 일 뿐 입 니 다.
<form action="${pageContext.request.contextPath}/test/upload.do" method="post" enctype="multipart/form-data">
: <br />
<input type="file" name="imgs1" multiple><br /> <br />
: <br />
<input type="file" name="imgs2"><br />
<input type="file" name="imgs2"><br /><br />
: <br />
<input type="file" name="imgs3"><br /><br />
<input type="submit" name=" ">
</form>
2.컨트롤 러
@Controller
@RequestMapping("/test")
public class MyController {
@RequestMapping(value = "/upload.do", method = RequestMethod.POST)
public String upload(@RequestParam MultipartFile[] imgs1,@RequestParam MultipartFile[] imgs2,@RequestParam MultipartFile[] imgs3, HttpSession session)
throws Exception {
String path = session.getServletContext().getRealPath("images");
for (MultipartFile img : imgs1) {
uploadFile(path, img);
}
for (MultipartFile img : imgs2) {
uploadFile(path, img);
}
for (MultipartFile img : imgs3) {
uploadFile(path, img);
}
return "/success.jsp";
}
private void uploadFile(String path, MultipartFile img) throws IOException {
if (img.getSize() > 0) {
String fileName = img.getOriginalFilename();
if (fileName.endsWith("jpg") || fileName.endsWith("png")) {
File file = new File(path, fileName);
img.transferTo(file);
}
}
}
}
Multipart File[]은 이렇게 강력 합 니 다.한 개 이상 의 논리 적 처리 와 마찬가지 로 프로젝트 개발 에 Multipart File[]을 파일 의 수신 매개 변수 로 사용 하 는 것 을 권장 합 니 다.확장
1.MultipartFile 류 에서 자주 사용 하 는 방법:
String getContentType()// MIME
InputStream getInputStream()//
String getName() //
String getOriginalFilename() //
long getSize() // , byte
boolean isEmpty() //
void transferTo(File dest)
2.Commons Multipart Resolver 의 속성 분석이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ssm 프레임워크 업로드 이미지 로컬 및 데이터베이스에 저장 예시본고는 ssm 프레임워크 업로드 이미지를 로컬과 데이터베이스에 저장하는 예시를 소개하고 주로 Spring+SpringMVC+MyBatis 프레임워크를 사용하여 ssm 프레임워크 업로드 이미지의 실례를 실현했다. 구체...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.