본문 바로가기

Server Oriented/Java & JSP

multipart/form-data 관련 소고

$.ajax 옵션 조정

- contentType:false, 

  contentType 을 false 로 해야 경계 문자열이 누락되지 않는다 함

- processData:false

  processData 를 false 로 하지 않으면 formdata 를 문자열로 변환하려 시도하고 오류가 발생한다 함

- data: 값을 세팅할 때 multipart/form-data form 태그를 new FormData(this) 로 넣는 방법..?

http://code.i-harness.com/ko/q/5247d8

http://code.i-harness.com/ko/q/a64fb8




A.jsp 에서 form 태그의 enctype 이 multipart/form-data 이고,

B.jsp 에서 A.jsp 가 전달해 준 데이타를 처리하는 경우..

이미 알고 있는 로직을 B.jsp 에서 사용하면 됩니다.


여기에서는, 주의할 점을 기술해 봅니다.


만약 enctype 이 없는 form 정보를 C.jsp 에서 처리하게 하려면..


1. 상기 A.jsp 에 enctype 이 없는 form 태그와 type 이 hidden 인 input 태그를 운용하여 처리.

이때 처리하는 쪽은 multipart/form-data 를 처리하지 않아도 되는 D.jsp 를 운영해야 하겠죠.


2. 만약 공통 모듈이 있어서 상기 1의 방법이 불가한 경우라면..

Ajax 로직으로 처리하면 됩니다. Ajax 자체는 form 태그를 사용하지 않기 때문에 상기 D.jsp 를 사용할 수 있습니다.


3. multipart/form-data 를 처리하는 C.jsp 를 호출하면서,

get 방식으로 A.jsp 에 들어 있는 태그 name 을 중복하게 되면 엉뚱한 값이 들어갈 수 있습니다.

이를테면, A.jsp 에 name 이 inputA 인 input 태그가 있고 값이 B 로 세팅되어 있다고 한다면..

C.jsp 를 호출할 때 C.jsp?inputA=A 이라고 get 방식으로 호출하더라도,

수신하는 쪽은 호출될 때의 상기 B 값이 세팅되어 있으므로 C.jsp 에서 inputA 에 들어 있는 값은 A 가 아니라 B 로 인식하게 됩니다.