2

ASP.NET 4.5 Web API コントローラーに画像をアップロードするために、fineuploaderを使用しています。コントローラーがヒットし、画像がアップロードされます。API コントローラーから 200 応答を受け取りました。アップロードが成功した後にサムネイルを表示しています。Amazon S3 内の場所へのファイル名は、JSON 応答で返されるはずです。Chrome または IE10 でこれを試してみると、問題なく動作します。これを Firefox で試すとresponseJson、空のオブジェクトが返され、失敗として表示されます。jQuery 1.8.2 と fineuploader 3.2 を使用しています。未定義のため、実際にundefined画面に表示されます。responseJson.messagejsコードは次のとおりです。

(function ($) {
  $('#file-uploader').fineUploader({
    multiple: false,
    request: {
      endpoint: '/api/post-logo',
      forceMultipart: false
    },
    // other setup options removed for brevity
  }).on('complete', function (event, id, fileName, responseJson) {
    if (responseJson.success) {
      // for now, to illustrate the issue
      alert(responseJson.savefilename);
    } else {
      $('#file-uploader').after("<span class='field-validation-error'>" + responseJson.message + "</span>");
    }
  });
})(jQuery);

返ってくるレスポンスはapplication/json. これを Firefox で正しく動作させるにはどうすればよいですか?

4

1 に答える 1

3

FF と Chrome の違いは、Accept送信されるリクエスト ヘッダーです。FireBug と Chrome 開発者ツールバーを使用して、2 つのブラウザーの結果を比較するだけです。

FF:

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

クロム:

Accept: */*

ご覧のとおり、FF は正しいAcceptヘッダーを送信しておらず、Web API のコンテンツ ネゴシエーション メカニズムは単にフォールバックしますtext/xml(それがクライアントが要求したものであるため)。

幸いなことに、プラグインを使用すると、プロパティを使用してリクエストヘッダーをオーバーライドcustomHeaderし、予想されるタイプに強制することができます(application/jsonあなたの場合):

request: {
    endpoint: '/api/post-logo',
    forceMultipart: false,
    customHeaders: { Accept: 'application/json' }
},
于 2013-02-17T11:35:20.943 に答える