백엔드(Back-end)/Java

[Java] Ajax & FormData로 서버에 파일 업로드하기①

기록하는 동구 2020. 2. 3. 18:18
반응형

안녕하세요, 기록하는 동구 입니다.

 

이번 포스팅에서는 Ajax와 formData를이용해서 파일을 업로드해보겠습니다. 

파일업로드 Ajax 방식의 핵심은 FormData라는 브라우저에서 지원하는 클래스입니다.

 

FormData는 <form>태그와 같은 효과를 가져다주는 key/value가 저장되는 객체이다. <form>태그 처럼 데이터를 처리할수 있게 해줍니다. 이를 XHR에 실어서 서버에보내면 <form>태그 실어서 전송된것 같은 효과를 줍니다.

자 그럼 예제를 보면서 같이 해볼까요?

 


간단하게 뷰단의 예제코드를 작성해봅니다.

1
2
3
4
5
<h1>Ajax & FormData로 파일 업로드하기</h1>
        <input type="file" name="upload_file" multiple />
        <input type="button" id="btn_upload" value="submit" />
view(화면단)

그다음은, 직접 ajax를 이용해서 컨트롤러단으로 넘기는 코드를 짜보겠습니다.

 

 

(ColorScripter가 소스코드를 잘못불러와서.... 그냥 이미지로 붙혔습니다. 죄송합니다.)

 

여기서 ajax파라미터중에 contentType, processData를 꼭 false로 설정해주셔야합니다.

1.processData는 일반적으로 서버에 전달되는 데이터는 query String 형태로 전달됩니다. data파라미터로 전달된 데이터는 jQuery내부적으로 query string으로 만드는데, 파일전송에는 이를 피해야함으로 false설정해줍니다.

 

2.contentType은 default값이 "application/x-www-form=urlencoded; charset=UTF-8"인데 파일을 보내줄때는 multipart/form-data로 전송해야하기때문에 false로 설정해줍니다. 파일을전송하고 디버깅모드로 체크해보면 Content-Type:multipart/form-data로 나오는걸 볼수있습니다.

 

다음 포스팅에서는 이어서 파일을 받아서 로컬pc에 저장시키고 데이터베이스에 넣어보도록 하겠습니다~ 읽어주셔서 감사합니다.

 

반응형