여러개의 파일을 동시에 업로드 하는 기능에 대한 문의 드립니다.
- 작성자 :
- 이*필
- 작성일 :
- 2014-12-11 14:21:02
- 조회수 :
- 1,445
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
다운로드 --> 실행환경 --> File upload 예제
를 다운받아 프로그램을 작성했습니다.
서버쪽, 즉 controller, Service 부분은 변경한 내용은 없습니다.
한개의 파일을 업로드 하는 기능은 잘 동작합니다.
ajax로 호출할때 문제가 발생했었는데...
<bean name="jsonViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="order" value="1"/>
<property name="location" value="WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml"/>
</bean>
위 내용을 추가 한 후에 해결되었습니다.
여러개의 파일을 동시에 업로드 하려고 테스트 하는데
첫번째 파일만 등록이 되고 servcie의 loop를 빠져 나옵니다.
무엇이 문제인지요?
참고로
-- upload form
<form id="fileUpload" action="/fileUpload.do" method="post" enctype="multipart/form‐data">
<p> <input type="hidden" name="type" value="genericFileMulti" /> </p>
<p> File1: <input type="file" name="file[]" multiple accept="image/*" size="60" /> </p>
<p> <input type="button" id="btnFileUpload" value="전송" /> </p>
</form>
-- ajax call
$('#btnFileUpload').on('click', function () {
var form = new FormData(document.getElementById('fileUpload'));
console.log(form);
$.ajax({
url: "/fileUpload.do",
data: form,
dataType: 'text',
processData: false,
contentType: false,
type: 'POST',
success: function (response) {
alert('success!!!');
},
error: function (jqXHR) {
alert('error!!!!' + jqXHR);
console.log(jqXHR);
}
});
});
감사합니다.
를 다운받아 프로그램을 작성했습니다.
서버쪽, 즉 controller, Service 부분은 변경한 내용은 없습니다.
한개의 파일을 업로드 하는 기능은 잘 동작합니다.
ajax로 호출할때 문제가 발생했었는데...
<bean name="jsonViewResolver" class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="order" value="1"/>
<property name="location" value="WEB-INF/config/egovframework/springmvc/dispatcher-servlet.xml"/>
</bean>
위 내용을 추가 한 후에 해결되었습니다.
여러개의 파일을 동시에 업로드 하려고 테스트 하는데
첫번째 파일만 등록이 되고 servcie의 loop를 빠져 나옵니다.
무엇이 문제인지요?
참고로
-- upload form
<form id="fileUpload" action="/fileUpload.do" method="post" enctype="multipart/form‐data">
<p> <input type="hidden" name="type" value="genericFileMulti" /> </p>
<p> File1: <input type="file" name="file[]" multiple accept="image/*" size="60" /> </p>
<p> <input type="button" id="btnFileUpload" value="전송" /> </p>
</form>
-- ajax call
$('#btnFileUpload').on('click', function () {
var form = new FormData(document.getElementById('fileUpload'));
console.log(form);
$.ajax({
url: "/fileUpload.do",
data: form,
dataType: 'text',
processData: false,
contentType: false,
type: 'POST',
success: function (response) {
alert('success!!!');
},
error: function (jqXHR) {
alert('error!!!!' + jqXHR);
console.log(jqXHR);
}
});
});
감사합니다.
A
안녕하세요. 이종필님.
하나의 submit으로 여러 개의 파일을 올리신 경우이신가요?
아니면 각 파일 별로 여러 submit을 ajax로 동시에 호출하신 경우이신가요?
올려주신 소스 상에는 위 2가지 경우에 대한 처리 방식이 없이 단순히 하나의 파일만 올리신 것 으로 되어 있어 문제의 파악이 어렵습니다.
다만, 다음과 같이 각 경우에 대하여 설명드리겠습니다.
우선 두번째로 여러 submit async 방식으로 호출하신 경우 서버 처리의 Controller나 Service 부분이 thread-safe 하게 처리 되기 때문에, 동시 처리에 문제가 없습니다. 실제로 파일 업로드의 기능은 여러 사용자가 동시에 사용하도록 되어 있구요.
이 경우에는 Service 상의 loop가 한번 씩만 처리되도록 되어 있습니다.
첫번째 경우는 당연히 순차적으로 처리되기 때문에 문제가 발생되지 않습니다.
다만, 이종필님의 경우 하나의 submit으로 여러 개의 <input type='file' ../>을 포함하여 전송하였음에도 불구하고 loop가 한번 처리되는 경우는 MulipartResolver 상에 중대한 문제가 발생한 경우입니다. (아마도 이런 경우는 발생하지 않으셨을 것 같습니다. 가능성이 낮음)
그럼, 즐거운 하루되십시오.
감사합니다.
하나의 submit으로 여러 개의 파일을 올리신 경우이신가요?
아니면 각 파일 별로 여러 submit을 ajax로 동시에 호출하신 경우이신가요?
올려주신 소스 상에는 위 2가지 경우에 대한 처리 방식이 없이 단순히 하나의 파일만 올리신 것 으로 되어 있어 문제의 파악이 어렵습니다.
다만, 다음과 같이 각 경우에 대하여 설명드리겠습니다.
우선 두번째로 여러 submit async 방식으로 호출하신 경우 서버 처리의 Controller나 Service 부분이 thread-safe 하게 처리 되기 때문에, 동시 처리에 문제가 없습니다. 실제로 파일 업로드의 기능은 여러 사용자가 동시에 사용하도록 되어 있구요.
이 경우에는 Service 상의 loop가 한번 씩만 처리되도록 되어 있습니다.
첫번째 경우는 당연히 순차적으로 처리되기 때문에 문제가 발생되지 않습니다.
다만, 이종필님의 경우 하나의 submit으로 여러 개의 <input type='file' ../>을 포함하여 전송하였음에도 불구하고 loop가 한번 처리되는 경우는 MulipartResolver 상에 중대한 문제가 발생한 경우입니다. (아마도 이런 경우는 발생하지 않으셨을 것 같습니다. 가능성이 낮음)
그럼, 즐거운 하루되십시오.
감사합니다.