[JQUERY] 어떻게 JSP / 서블릿과 Ajax를 사용하여 서버에 파일을 업로드하려면?
JQUERY어떻게 JSP / 서블릿과 Ajax를 사용하여 서버에 파일을 업로드하려면?
해결법
-
1.지점에, jQuery를에 의해 사용되는 현재의 XMLHttpRequest의 버전 1, XMLHttpRequest를 통해 자바 스크립트를 사용하여 파일을 업로드 할 수 없습니다. 일반적인 해결 방법은 자바 스크립트가 숨겨진
지점에, jQuery를에 의해 사용되는 현재의 XMLHttpRequest의 버전 1, XMLHttpRequest를 통해 자바 스크립트를 사용하여 파일을 업로드 할 수 없습니다. 일반적인 해결 방법은 자바 스크립트가 숨겨진
이 클라이언트는 다음과 같은 장애인 JS을 (당신이 지금 가지고 ...),이 때 깨진 아니에요 있도록 HTML 양식을 사용하여 JSP가 같은 방법으로 다시 작성된다고 가정 :
<form id="upload-form" class="upload-box" action="/Upload" method="post" enctype="multipart/form-data"> <input type="file" id="file" name="file1" /> <span id="upload-error" class="error">${uploadError}</span> <input type="submit" id="upload-button" value="upload" /> </form>
그리고 그것은 단지 문제를 플러그인 jQuery를 양식의 도움으로의
<script src="jquery.js"></script> <script src="jquery.form.js"></script> <script> $(function() { $('#upload-form').ajaxForm({ success: function(msg) { alert("File has been uploaded successfully"); }, error: function(msg) { $("#upload-error").text("Couldn't upload file"); } }); }); </script>
서블릿 측면에 관해서는, 특별한 물건은 여기에서 할 필요가 없습니다. 그냥 Ajax를 사용하지 않을 경우 당신이 할 것과 같은 방식으로 정확히 구현 방법 : JSP / 서블릿을 사용하여 서버에 파일을 업로드하려면?
는 X가-요청-으로하는 경우 헤더는 XMLHttpRequest의 같음 여부를 당신은 (당신이 어떤 종류의 응답의 클라이언트를 사용할 수 JS를 가지고있는 경우에 반환하는 방법을 알 수 있도록하는 서블릿에서 추가 검사가 필요합니다 지금과 같은, 그것은 주로 장애인 JS)가 기존의 모바일 브라우저입니다.
if ("XMLHttpRequest".equals(request.getHeader("X-Requested-With"))) { // Return ajax response (e.g. write JSON or XML). } else { // Return regular response (e.g. forward to JSP). }
상대적으로 새로운 XMLHttpRequest의 버전 2는 새로운 파일 및 FormData API를 사용하여 선택한 파일을 전송 할 수 있습니다. 또한 자바 서블릿에 HTML5 파일 업로드를 참조 XMLHttpRequest를 통해 여러 부분으로 파일을 전송.
-
2.@ Monsif의 코드는 양식이 일부 다른 입력 다른 다음 파일 형식이있는 경우, 그들은 길을 잃지 만 파일 형식의 입력이 잘 작동합니다. 그래서, 대신 각 양식에 데이터를 복사하고 FormData 객체로 추가로, 원래의 형태 자체는 생성자에 부여 할 수 있습니다.
@ Monsif의 코드는 양식이 일부 다른 입력 다른 다음 파일 형식이있는 경우, 그들은 길을 잃지 만 파일 형식의 입력이 잘 작동합니다. 그래서, 대신 각 양식에 데이터를 복사하고 FormData 객체로 추가로, 원래의 형태 자체는 생성자에 부여 할 수 있습니다.
Monsif의 코드와 https://www.new-bamboo.co.uk/blog/2012/01/10/ridiculously-simple-ajax-uploads-with-formdata/ 포스트 @에 관해서는, 나는 다음과 같은 코드로 나온하는 날 위해 일했습니다. 나는 다른 사람을 도움이되기를 바랍니다.
<script type="text/javascript"> var files = null; // when files input changes this will be initiliazed. $(function() { $('#form2Submit').on('submit', uploadFile); }); function uploadFile(event) { event.stopPropagation(); event.preventDefault(); //var files = files; var form = document.getElementById('form2Submit'); var data = new FormData(form); postFilesData(data); } function postFilesData(data) { $.ajax({ url : 'yourUrl', type : 'POST', data : data, cache : false, dataType : 'json', processData : false, contentType : false, success : function(data, textStatus, jqXHR) { alert(data); }, error : function(jqXHR, textStatus, errorThrown) { alert('ERRORS: ' + textStatus); } }); } </script>
HTML 코드는 다음과 같이 할 수있다 :
<form id ="form2Submit" action="yourUrl"> First name:<br> <input type="text" name="firstname" value="Mickey"> <br> Last name:<br> <input type="text" name="lastname" value="Mouse"> <br> <input id="fileSelect" name="fileSelect[]" type="file" multiple accept=".xml,txt"> <br> <input type="submit" value="Submit"> </form>
-
3.이 코드는 나를 위해 잘 작동합니다 :
이 코드는 나를 위해 잘 작동합니다 :
$ ( '# fileUploader') ( '변경'을 UploadFile)에.; 기능을 UploadFile (이벤트) { event.stopPropagation (); 에서는 event.preventDefault (); VAR 파일 = event.target.files; VAR 데이터 = 새로운 FormData (); $ .each (파일, 기능 (키, 값) { data.append (키 값); }); postFilesData (데이터); } postFilesData 기능 (데이터) { {(아약스 $ URL : 'yourUrl' 입력 : 'POST', 데이터 : 데이터, 캐시 : 거짓, dataType와 'JSON' processData : 거짓, ContentType을 : 거짓, 성공 : 기능 (데이터 textStatus, jqXHR) { //성공 }, 오류 : 함수 (jqXHR, textStatus, errorThrown) { 을 console.log ( '오류 :'+ textStatus); } }); }
-
4.이 코드는 나를 위해 작동합니다.
이 코드는 나를 위해 작동합니다.
중고 공유지는 공유지 파일 upload.jar와 jQuery를 양식 플러그인 &를 io.jar
'JQUERY' 카테고리의 다른 글
[JQUERY] 어떻게 자동 완성 플러그인 결과를 맞춤 형식을 지정할 수 있습니다? (0) | 2020.10.07 |
---|---|
[JQUERY] fn.toggle (핸들러 (eventObject)가, 핸들러 (은 EventObject)는 ...) 어디 갔다? (0) | 2020.10.07 |
[JQUERY] 어떻게 JQuery와 작업 체인입니까? (0) | 2020.10.07 |
[JQUERY] JQuery와 $ 실제로 무엇을 반환합니까? (0) | 2020.10.07 |
[JQUERY] "가져가"어떻게 CSS를 활성화 순수 자바 스크립트에 마우스 오버를 시뮬레이션 할 수 있습니까? (0) | 2020.10.07 |