[英]Could not upload photo using IFormFile object in ASP.Net Core 2 with null reference expception
我嘗試使用郵遞員插件使用IFormFile
上傳照片。 但是API並未從請求的主體中獲取文件對象。 我嘗試使用[FromBody]
和不使用[FromBody]
。
[HttpPost]
public async Task<IActionResult> Upload(int vId, IFormFile fileStream)
{
var vehicle = await this.repository.GetVehicle(vId, hasAdditional: false);
if (vehicle == null)
return NotFound();
var uploadsFolderPath = Path.Combine(host.WebRootPath, "uploads");
if (!Directory.Exists(uploadsFolderPath))
Directory.CreateDirectory(uploadsFolderPath);
var fileName = Guid.NewGuid().ToString() + Path.GetExtension(fileStream.FileName);
var filePath = Path.Combine(uploadsFolderPath, fileName);
using (var stream = new FileStream(filePath, FileMode.Create))
{
await fileStream.CopyToAsync(stream);
}
錯誤顯示在此行:
var fileName = Guid.NewGuid().ToString() + Path.GetExtension(fileStream.FileName);
我發現它在使用相同的鍵"fileStream"
發送image.jpg時沒有得到文件。 順便說一句,其他一切正常。 我沒有找到解決此問題的解決方案。 如果有人可以幫助我,請告訴我。
FromBody屬性只能在簽名中的一個參數上使用。 發送int vId
一種選擇是通過查詢字符串,並使用FromQuery屬性讀取它。
像這樣嘗試
[HttpPost]
public async Task<IActionResult> Upload([FromQuery]int vId, [FromBody]IFormFile fileStream)
然后進行POST到url api/yourController?vId=123456789
,其中正文包含IFromFile
更新資料
由於表單數據將作為鍵值發送,因此請嘗試創建一個包含鍵的模型並從正文中讀取它
public class RequestModel
{
public IFormFile fileStream { get; set; }
}
然后從身體讀取模型
[HttpPost]
public async Task<IActionResult> Upload([FromBody]RequestModel model)
終於得到了解決方案。 其實問題出在郵遞員的選項卡式郵遞員的舊版本-REST Client chrome擴展。 在嘗試使用新的郵遞員應用程序后,它工作得非常好。 感謝所有嘗試解決此問題的人。 結果如下: 在此處輸入圖片描述
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.