アップロードフィールドのあるExtJsフォームがあります。フォームを要約すると、Accept-headerが間違っています。応答はJSONですが、送信されるAccept-headerは次のとおりです。
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
私の知識に基づく推測では、これはブラウザのデフォルト値です。
Chromeでは、これにより警告が発生します。リソースはドキュメントとして解釈されますが、MIMEタイプapplication/jsonで転送されます。
FireFoxでは、これによりファイルがダウンロードされます。
結論:Accept-headerを次のように変更/設定する必要がありますapplication/json
Senchaのドキュメントにはheaders
パラメータがあると書かれていますが、私はテストしましたが、fileuploadでは機能しません。コメントによると、サポートされていません。(別のスレッドで同じ結果が見つかりました)
ファイルのダウンロードを削除する/適切なAccept-headerを設定するための提案...ExtJsソリューションである必要はありません。ファイルアップロードフォームにacceptヘッダーを設定するためのプレーンなjavaScriptソリューションを提供できれば、おそらくそれをsenchaフレームワークに組み込むことができます。
アップデート:
ExtJSフォームの送信:
form.submit({
url: API_URLS.addDocument,
waitMsg: 'Uploading your document...',
headers: {
"Accept": 'application/json' //doesn't work
},
success: function() {
...
},
failure: function(){
...
}
});
舞台裏では、次のような通常のフォームを作成します。
<form action="API_URLS.addDocument" enctype="multipart/form-data" method="post">
<input type="file"/>
</form>
javaScript(submit()
)を介して送信できます