일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Stock
- Oracle
- JavaScript
- 맥
- 6월 공모주 청약 일정
- html
- MYSQL
- 공모주
- css
- 리눅스
- linux
- 주식 청약 일정
- SQL
- 오라클
- IPO
- Eclipse
- 공모주 청약
- 자바스크립트
- 자바
- Stock ipo
- 코드이그나이터
- jquery
- 7월 공모주 청약 일정
- codeigniter
- 주식 청약
- 주식
- php
- java
- 제이쿼리
- 공모주 청약 일정
- Today
- Total
개발자의 끄적끄적
[java] [Spring] 스프링 3.0 에서 파일 업로드 처리 (File Upload) [펌] 본문
[java] [Spring] 스프링 3.0 에서 파일 업로드 처리 (File Upload) [펌]
가장 기본적으로 파일 업로드를 하려면
html 문서 안에 <form> 태그에서
<form method="post" enctype="multipart/form-data">
...........
</form>
Multipart 지원기능을 사용하려면 먼저 multipartResolver 를 스프링 설정 파일에 등록 해주어야 한다.
CommonsMultipartResolver 를 multipartResolver 로 사용하려면, 다음과 같이
빈 이름을 반드시!!! "multipartResolver" 로 등록해서 사용하면 된다.
다른이름으로 등록하면 안된다. 그냥 안된다. 절대안된다. 업로드를 포기하라.
<bean id="multipartResolver"
class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>
참고로 프로퍼티들은
maxUploadSize(최대업로드 가능한 바이트크기)
maxInMemorySize(디스크에 임시 파일을 생성하기 전에 메모리에 보관할수있는 최대 바이트 크기)
defaultEncoding(요청을 파싱할 때 사용할 캐릭터 인코딩. 기본값 ISO-8859-1)
이제 컨트롤러 파일에서 업로드가 되는 파일에 접근을 해야하는데,
빈객체를 이용해서 받는 방법(커맨드 객체),
@RequestParam 어노테이션을 이용하는 방법,
MultipartHttpServletRequest 를 이용하는 방법,
머 편한 방법을 택하면 된다.
주의 할 점은 <input type="file" name="file" size="50">
폼에서 파일프로퍼티 이름을 "file"로 썼다면,
업로드될 파일에 접근 프로퍼티도 항상 무조건 네버! "file" 이 되어야 한다.
빈객체를 이용하는 방법은
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
public class ItemBean {
MultipartFile file;
public MultipartFile getFile() { return file; }
public void setFile(MultipartFile file) { this.file = file; }
|
자바빈 파일에 set,get을 등록해주면 자동으로 들어간다.
다음은 @RequestParam 어노테이션을 이용한 방법
1 2 3 4 5 |
@RequestMapping(method = RequestMethod.POST) public ModelAndView process(HttpSession session, ItemBean itemBean, @RequestParam("file")MultipartFile file) { |
나머지는 귀찮아서....
일단 이렇게 하면 MultipartFile 타입으로 file 에 업로드된 파일이 들어오게된다.
여기까지 했으면 다 끝난거다. 이제 쓰기만 하면 된다.
쓰는법은 하고싶은데로 하면되는데,
MultipartFile 의 주요 메소드는
String getName() | 파라미터 이름을 구한다. |
String getOriginalFilename() | 업로드 한 파일의 실제!! 이름을 구한다. |
boolean isEmpty() | 업로드 한 파일이 존재하지 않는 경우 true를 리턴한다. |
long getSize() | 업로드한 파일의 크기를 구한다. |
byte[] getBytes() throws IOException | 업로드 한 파일 데이터를 구한다. --> 이걸로 파일 쓰면된다. |
InputStream getInputStream() | InputStrem을 구한다. |
void transferTo(File dest) | 업로드 한 파일 데이터를 지정한 파일에 저장한다. --> 요고도 파일쓰는거다. |
걍 쉽게 MultipartFile.getBytes() 를 이용해서 쓰는게 편하다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
package Spring;
import java.io.FileOutputStream;
import org.springframework.web.multipart.MultipartFile;
public class FileWriter {
private FileOutputStream fos;
public void writeFile(MultipartFile file, String path, String fileName){
try{
byte fileData[] = file.getBytes();
fos = new FileOutputStream(path + "\\" + fileName);
fos.write(fileData);
}catch(Exception e){
e.printStackTrace();
}finally{
if(fos != null){
try{ fos.close(); }catch(Exception e){}
} }// try end;
}// wirteFile() end; } |
업로드한 파일을 특정파일로 저장하고 싶다면 MultipartFile.transferTo() 를 쓰면 편하다.
File file = new File(filePath + fileName);
multipartFile.transferTo(file);
출처: https://winmargo.tistory.com/102 [보리 & 마고]
'개발 > javascript & jquery' 카테고리의 다른 글
[jquery] 날짜 비교 (날짜비교) [펌] (0) | 2020.03.18 |
---|---|
[javascript] 각 단어의 첫글자를 대문자로 (0) | 2020.03.09 |
[javascript] Crawling (크롤링) (0) | 2020.02.26 |
[javascript] Javascript 기반의 압축 라이브러리, jszip [펌] (0) | 2020.02.20 |
[javascript] 정규표현식을 이용한 이메일 유효성 검사 (자바스크립트) [펌] (0) | 2020.02.20 |