簡體   English   中英

無法在ASP.Net Core 2中使用IFormFile對象上載具有空引用接收的照片

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM