私はmultipart/form-data
次のJavaScriptとjQueryで送信しようとしています:
var formData = new FormData();
formData.append("projectName", $("#projectNameInput").val());
var file = $("#fileInput")[0].files[0];
formData.append("content", file);
var xhr = new XMLHttpRequest();
xhr.open('POST', '/project', true);
xhr.onload = function(ev) {
// Handling logic omitted
};
xhr.send(formData);
ただし、一部のクライアントブラウザ(FirefoxおよびChrome)400 Bad Request
はサーバーから受信します。ヘッダーとリクエストペイロードを調べていると、一部のブラウザがファイルの明示的なコンテンツタイプを次のように設定していることがわかりました。
------WebKitFormBoundaryEuDIpEU2Ci8VNwNJ
Content-Disposition: form-data; name="content"; filename="testfile.ext"
Content-Type: EXT Project Data (64bit)
------WebKitFormBoundaryEuDIpEU2Ci8VNwNJ
作業中のリクエストではContent-Type
、次のようにする必要がContent-Type: application/octet-stream
あります。サーバーが適切に処理できる。
これは、ブラウザーの構成またはファイルの関連付けに関係していると思われます。リクエストのファイル部分のコンテンツタイプを明示的に設定する方法はありますか?
この問題は、FirefoxとChromeを使用している一部のユーザーで発生します。ただし、一部のユーザーはChromeとFirefoxを使用して正常にアップロードできます。IEはアプリケーションでサポートされていません。