8

ファイルをアップロードする別の方法についてまだ混乱しています。バックエンド サーバーは私の管理下にありませんが、Swagger ページまたは Postman を使用してファイルをアップロードできます。これは、サーバーが正常に機能していることを意味します。しかし、AngularJS を使用してアップロードを行うと、うまくいきません。

Postman を使用してテストした場合の動作は次のとおりです。私はちょうど使用していform-dataます:

ここに画像の説明を入力

Request Headers の Content-Type は multipart/form-data であることに注意してください。ただし、リクエスト ペイロードのfilenameContent-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 エラーを返しました。

4

2 に答える 2