ファイルをアップロードする別の方法についてまだ混乱しています。バックエンド サーバーは私の管理下にありませんが、Swagger ページまたは Postman を使用してファイルをアップロードできます。これは、サーバーが正常に機能していることを意味します。しかし、AngularJS を使用してアップロードを行うと、うまくいきません。
Postman を使用してテストした場合の動作は次のとおりです。私はちょうど使用していform-data
ます:
Request Headers の Content-Type は multipart/form-data であることに注意してください。ただし、リクエスト ペイロードのfilename
Content-Type は image/png です。
これが私のコードです:
$http({
method: 'POST',
url: ApiUrlFull + 'Job/Item?smartTermId=0&name=aaa1&quantity=1&ApiKey=ABC',
headers: { 'Content-Type': undefined },
transformRequest: function(data) {
var fd = new FormData();
fd.append('file', params.imageData);
return fd;
}
})
params
はファイルの URL を持つ単なるオブジェクトですimageData
。
私のコードも同様の URL パラメーターを送信します (そのため、問題の原因を無視できます)。しかし、リクエスト ペイロードは base64 であり、フィールドが欠落しているため、見た目が異なりfilename
ます。
私はバックエンドをまったく制御できず、.NET で記述されています。
だから私の質問は次のとおりだと思います: Angular ($http または $resource) を使用して、Postman と同じように正しい要求ペイロードを送信するように要求を変更するにはどうすればよいですか? これをリバースエンジニアリングする方法がわかりません。
私はこのhttps://github.com/danialfarid/ng-file-uploadを試しましたが、実際には POST の前に最初に OPTIONS リクエストを実行しました (CORS の問題を想定)。しかし、サーバーは OPTIONS に対して 405 エラーを返しました。