2013-01-01 10 views
3

XMLHttpRequest 레벨 2 사용하기 파일을 업로드하고 싶습니다. jQuery를 사용하여 환경 설정에서 jQuery를 사용하고 싶습니다. Ajax 파일 업로드가 Chrome에서는 작동하지만 Firefox에서는 작동하지 않습니다.

그래서 나는 내가`

과 함께 할 PHP로 서버 측에서 다음 코드 작성 (커피 스크립트를하지만, 자바 스크립트에 익숙 누구나 쉽게 읽을 수 있어야한다) 그 코드를 사용

fileToUpload = event.currentTarget.files[0] 

data = new FormData() 
data.append("uploadedfile", fileToUpload) 

$.ajax({ 
    type: 'POST', 
    url: url, 
    data: data, 
    contentType: false, 
    processData: false, 
    mimeType: 'multipart/form-data', 
}) 

Firefox 17.0.1 나는 아무것도 얻지 못합니다. $ _FILES가 크롬 22.0으로 내가 업로드 된 파일 수, 널 (이상한 형식으로,하지만 적어도 뭔가)는 파이어 폭스 버그 인 경우

Array 
(
    [uploadedfile] => Array 
     (
      [name] => filename.txt 
      [type] => application/octet-stream 
      [tmp_name] => /tmp/phpWwenhc 
      [error] => 0 
      [size] => 189 
     ) 

) 

사람합니까 알아? 해결 방법이 있습니까? 내가 뭔가 잘못하고 있는거야? 비슷한 문제가 있었지만 발견 된 모든 답변이 저와 함께 작동하지 않았습니다 (Firefox가 아니거나, xhr 레벨 2를 사용하지 않는 등)

미리 감사드립니다.

제발 : 나는 IE 나 이전 버전에는 상관하지 않습니다. iframe 솔루션이나 플러그인이 아닙니다. 그냥 XmlHttpRequest 레벨 2에 대해 들었습니다. 그것에 대해 듣지 못한 사람들을 위해 : https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/FormData/Using_FormData_Objects

+0

는'mimeType' 매개 변수 – Musa

+0

를 제거하십시오 나는 그것이 같은 올바른 표시 할 수 있도록 @Musa 당신이 답변으로 당신의 제안을 게시 할 수 있습니까? 조언 해 주셔서 감사합니다. 나는 그 간단한 사실을 놓친 답변을 찾기 위해 너무 피곤했습니다. – Fernando

답변

2

mimeType 매개 변수를 제거하면 브라우저가 필요한 경계로 올바른 MIME 유형을 생성합니다.

0

나는 방금 만들었습니다. AJAX를 통해 파일을 업로드 할 수있는 방법은 없습니다. 더 나은 단지 .php 파일을 직접 참조하십시오.

+0

예, 최근 시간에 방법이 있습니다. (최근 2 년을 의미하는 경우). 아직 완전한 브라우저 지원은 없지만 내가 신경 써야 할 두 가지 사항이있다. 이것에 대한 자세한 내용 : https://developer.mozilla.org/en-US/docs/DOM/XMLHttpRequest/FormData/Using_FormData_Objects – Fernando

0

Firefox와 PHP가 이해할 수 있도록 파일을 배열로 처리해야 할 수도 있습니다. 업로드 필드의 이름을 변경해보십시오 :

data.append("uploadedfiles[]", fileToUpload); 
관련 문제