0

私はAurelia Fetch Clientを使用してWeb APIエンドポイントにファイルアップロード要求を送信しています。しかし、IFormFileはすべてのタイルが空です。私のコードは以下の通りです。ASP.NET Core Web API IFormFile Empty、FormDataリクエストを送信するとき

クライアント側

const formData = new FormData(); 
formData.append("files", account.statement); 

const response = await this.http.fetch(url, { method: "POST", body: formData 
}); 

ウェブAPIエンドポイント

[HttpPost] 
public IActionResult Save () 
{ 
    var files = Request.Form.Files; 
} 

ファイルは常にnullです。私はこれに続いてpostと述べたようにしています。しかし、それでも何が間違っているか把握することはできません。

答えて

0

私はこれをDTOを使って行い、アップロードしたファイルをFormDataのFileオブジェクトとして指定する方法を考え出しました。これは、Fileオブジェクトで送信する必要がある他のフィールド値があるためです。

サーバー

は、必要とされる特性を持つDTOオブジェクトを作成します。

public class SaveAccountRequest 
{ 
public string AccountName { get; set; } 
public IFormFile Statement { get; set; } 
} 

コントローラのエンドポイントで受け入れられたパラメータとしてDTOを追加します。

[HttpPost] 
public IActionResult SaveAccount(SaveAccountRequest saveAccountRequest) 
{ 
//you should be able to access the Statement property as an IFormFile in the saveAccountRequest. 
} 

クライアント

アペンドいるFormDataオブジェクトへのすべてのプロパティと、サーバー側DTOに使用される名前に基づいて、それらに名前を付けることを確認してください。

const formData = new FormData(); 
formData.append("accountName", accountName); 
formData.append("statement", saveBankAccountRequest.primaryCurrencyId); 

SaveAccountエンドポイントにデータをポストします。私はフェッチAPIを使用してデータを投稿していますが、単純なポストも有効です。

this.http.fetch(<api endpoint url>, { method: "POST", body: formData }); 
関連する問題