4

Rails 3とともにjQueryファイルアップローダープラグインを使用しています。ここにプラグイン:

https://github.com/blueimp/jQuery-File-Upload

プラグインを使用して、ユーザーがプロフィール写真をアップロードできるようにしています。これまでのところ、このソリューションは Chrome、Safari、および Firefox で動作します。ただし、IE では失敗します。IE でファイルを選択すると、プラグインはサーバーに投稿しますが、パラメーターがなく、空の投稿です。

クロムでの投稿例:

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 では何も送信しません。

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

これが私の実装です:

$('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

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

IEがこれを行う理由はありますか? ありがとう

4

3 に答える 3

4

基本プラグインを使用していますか?私は同じ問題を抱えていて、jquery.iframe-transport.js プラグインが含まれていないことに気付くために 1 日だけ戦いました。

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

こちらのドキュメントを参照してください。

おー!「authenticity_token」キーと値のペアを「formData」として含めることについてのスニペットに感謝します-これにより、Rails 3の警告「警告:CSRFトークンの信頼性を確認できません」を取り除くことができました

于 2012-10-25T04:50:14.473 に答える
0

基本的には、html 5 のデータ タグのサポートに関するものです。IE9 には深刻な問題があります。たとえば、画像をアップロードすると、クロムでは data:blob が送信され、実際に画像をアップロードする前にプレビューが表示されます。IE では、できません。Gmail のメール添付画面を IE9 で確認すると、違いがわかります。大規模なプロジェクトの場合は、フラッシュをイメージ アップローダーとして使用することをお勧めします。

于 2012-10-02T23:02:39.427 に答える
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`
    });

これはテスト済みで、上記の IE8 と IE9 + の両方で正常に動作します。正しい dataType:"json" (または datatype:"json") を使用していることを確認し、デバッグおよびチェック時に Web サービス メソッドの応答が正しく data.result に更新されていることを確認してください。ありがとう

于 2013-10-11T06:57:07.630 に答える