2012-10-02 3 views
4

내가 여기에 3 플러그인 레일과 함께 jQuery를 파일 업 로더 플러그인을 사용하고 아무 PARAMS을 게시하지 않음 프로필 사진을 업로드하십시오. 지금까지 Chrome, Safari, Firefox에서 작동합니다. 그러나 IE에서는 실패합니다. IE에서 파일을 선택하면 플러그인이 서버에 게시되지만 매개 변수가 없으므로 빈 게시물이됩니다. 크롬jQuery를 파일 업 로더 IE9는 업로드

예 포스트 :

$('input[type="file"]').fileupload({ 
    url : '/api/1/settings/ajax_photo_upload', 
    formData : [{ 
     name : 'authenticity_token', 
     value : $('meta[name="csrf-token"]').attr('content') 
    }], 
    type : 'PUT', 
    dataType: 'json', 
    add : function (e, data) { 
      data.submit(); 
    } 
}); 

HTML

: 여기
Started PUT "/api/1/settings/ajax_photo_upload" for 10.0.1.10 at 2012-10-02 15:39:31 -0700 
Processing by ApiV1::SettingsController#ajax_photo_upload as JS 

내 구현되어 그러나

Started PUT "/api/1/settings/ajax_photo_upload" for 10.0.1.3 at 2012-10-02 15:39:20 -0700 
Processing by ApiV1::SettingsController#ajax_photo_upload as JS 
    Parameters: {"photo"=>#<ActionDispatch::Http::UploadedFile:0x007f9e4bac2e48 @original_filename="xxxxx.jpeg", @content_type="image/jpeg", @headers="Content-Disposition: form-data; name=\"user[photo]\"; filename=\"xxxxx.jpeg\"\r\nContent-Type: image/jpeg\r\n", @tempfile=#<File:/var/folders/3x/k1yb0r4s07q1jm82kq93ch180000gn/T/RackMultipart20121002-3633-sxsbtu>>}, "update_type"=>"general"} 

IE9에서, 그것은 아무것도 보내하지 않습니다

<input name="user[photo]" type="file" accept="image/*" > 

IE가이 작업을 수행하는 이유는 무엇입니까? 감사합니다

답변

0

그것은 기본적으로 HTML 5의 데이터 태그에 대한 지원입니다. IE9에는 심각한 문제가 있습니다. 예를 들어 이미지를 업로드하면 크롬에 데이터가 전송되고 이미지를 실제로 업로드하기 전에 미리보기가 제공됩니다. IE에서는 할 수 없습니다. IE9에서 Gmail의 메일 첨부 화면을 확인하면 그 차이가 나타납니다. 대규모 프로젝트 인 경우 플래시를 이미지 업 로더로 사용하는 것이 좋습니다.

+0

어떤 데이터 태그가 있습니까? – AnApprentice

+0

데이터 속성을 말하고 싶습니다. 업로드 할 이미지를 추가 할 때 Google 크롬의 '요소 검사'를 선택합니다. 그것은 blob을 얻습니다 : html 5 로컬 데이터 저장에서 오는 http % 3A // blueimp.github.com. 이미지 미리보기를 볼 수 있습니다. IE9에서 같은 일을하십시오. 로컬 데이터 속성을 지원하지 않는 파일 이름 만 표시됩니다. –

4

기본 플러그인을 사용하고 있습니까? 나는 있었고, 난 같은 문제를 가지고 만 나는 jquery.iframe-transport.js 플러그인을 포함하지 않았 실현하기 위해 하루 동안 함께 싸웠다 :

<script src="js/jquery.iframe-transport.js"></script> 

이 문서 here를 참조하십시오.

오!

+0

fileupload가 호출 될 때 포함 된 매개 변수를 볼 수 없을 때마다 항상 대소 문자가 혼용됩니다. iframe 전송 파일이 포함되지 않았거나 잘못 포함되었습니다. 일반적으로 모든 브라우저에서 * forceIframeTransport : true *를 설정하여이를 재현 할 수 있습니다. – concept47

0
$("#txt1").fileupload({ 
     replaceFileInput: false, 
     dataType: "json",   
     datatype:"json", 
     url: "<%=Page.ResolveUrl("~/WebService/AddAttachment.ashx")%>", 
     done: function (e, data) { 
      $.each(data.result, function (index, value) { 
     //You get the response data in here from your web service 
      }) 
      $("#txt1").val(""); 
     }`enter code here` 
    }); 

이있다 "CSRF 토큰 진위를 확인할 수 없습니다 경고"-와 'formData'과 'authenticity_token'키 - 값 쌍을 포함에 대한 당신의 조각에 대한 감사는 3 경고 레일을 제거 나를 도왔다 위의 IE8 및 IE9 +에서 정상적으로 테스트되고 작동합니다. 올바른 dataType : "json"(또는 데이터 유형 : "json")을 사용하고 디버깅 및 점검 할 때 웹 서비스 메소드 응답이 data.result로 올바르게 업데이트되었는지 확인하십시오. 감사합니다.