0
我有一個ASP.Net核心Web API發送IFormFile到ASP.Net核心網絡API,像這樣限定的控制器POST方法:無法使用C#客戶
[HttpPost("SubmitFile")]
public async Task<IActionResult> SubmitFile(IFormFile file)
{
}
我有一個客戶端的方法調用API SubmitFile()方法,這樣的定義:
[HttpPost]
public async Task<IActionResult> Index(ICollection<IFormFile> files)
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(_options.SiteSpecificUrl);
foreach (var file in files)
{
if (file.Length <= 0)
continue;
var fileName = ContentDispositionHeaderValue.Parse(file.ContentDisposition).FileName.Trim('"');
var fileContent = new StreamContent(file.OpenReadStream());
fileContent.Headers.Add("X-FileName", fileName);
fileContent.Headers.Add("X-ContentType", file.ContentType);
var response = await client.PostAsync(_options.WebApiPortionOfUrl, fileContent);
}
}
return View();
}
當執行客戶端發送,在服務器側在SubmitFile一個斷點()表示該文件參數爲空。我怎樣才能正確地發送文件?保留服務器端API非常重要,因爲我有Swashbuckle/Swagger正確生成可以發送文件的UI。
我敢肯定,你不能接受一個接口作爲模型綁定參數。你必須使用具體的類。 –
你指的是SubmitFile(IFormFile文件)?請解釋... – stellaOctangula
不,像'List',而不是'ICollection'。雖然,閱讀文檔,它可以接受'IEnumerable '。請參閱https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads –