12

IE9에서 지원되어야하는 ajax를 사용하여 파일을 업로드해야합니다. 내가 언급 한대로 FormData를 사용했다 here. 이 사파리와 파이어 폭스에서 잘 작동IE9에서 작동하는 ajax를 사용하여 파일/파일 업로드 보내기

var files = new FormData(); 
JQuery.each($('#file')[0].files, function (i, file) { 
    files.append('file', file); 
}); 

$.ajax({ 
    type: "POST", 
    url: '/url', 
    cache: false, 
    contentType: false, 
    processData: false, 
    data: files, 
    ... 
}); 

하지만 FormData가 IE9에서 지원되지 않는 IE9에 실패 내 코드는 다음과 같습니다. 내가 설정하여 파일로 바로 전송 시도 :

데이터를 URL 인코딩 된 형태로 전송되고 자바 측면에서 분석 할 수 없습니다대로이 실패
data: $('#file')[0].files[0] 
contentType: 'multipart/form-data' 

. 이 문제를 해결하는 방법에 대한 도움이나 조언을 주시면 감사하겠습니다. 모든 브라우저에서 작동하는 무언가가 필요합니다.

편집 : 파일 크기가 작기 때문에 업로드 진행률 표시 줄이 필요하지 않습니다. 여러 파일을 업로드 할 필요가 없습니다. 파일 하나만 업로드하면됩니다.

+1

비슷한 질문이 있습니다. http://stackoverflow.com/questions/2320069/jquery-ajax-file-upload –

+0

'

'사용자 입력에 따라 여러 작업이있을 수 있습니다. 따라서 업로드 버튼에 '클릭'액션이 있습니다.이 버튼은 사용자로부터받은 입력 유형을 결정하고 이에 따라 리디렉션합니다. 우리는 이전에이 작업을 수행했지만 작업 중이었지만 이제 사용자 입력에 따라 다른 url/function으로 리디렉션되도록 요구 사항이 변경되었습니다. – Alice

답변

17

은 불행하게도 당신은 파일을 전송하기 위해 아약스 (즉 XMLHttpRequest)를 사용할 수 없습니다, 그러나 당신은 "자연"방법을 사용하여 사용자가 선택한 파일을 보내는 <input type="file"/>를 포함하는 <form method="post" enctype="multipart/form-data"/>으로 <iframe/>을 사용하여 비슷한 동작을 구현할 수 있습니다. javacript를 사용하여 form.submit()을 호출 한 다음 상위 문서에서 <iframe/>을 폴링하여 파일 업로드 프로세스가 완료되었는지 확인할 수 있습니다.

jQuery에는 a lot of cool plugins이 있습니다. 예를 들어 my favorite one이 있습니다.

+2

이 답변도 유용합니다. http://stackoverflow.com/questions/166221/how-can-i-upload-files-asynchronously-with-jquery?lq=1 –

+1

감사합니다 Danijar. 그게 내 문제를 해결해 줬어. IE10을 찾고 있습니다 – Alice

+0

BLOB 데이터를 사용하여 서버로 파일을 보낼 수 있습니다. –

관련 문제