为了账号安全,请及时绑定邮箱和手机立即绑定

无法使用 ASP.Net Core 2 中的 IFormFile 对象上传照片,并出现空引用异常

无法使用 ASP.Net Core 2 中的 IFormFile 对象上传照片,并出现空引用异常

C#
慕慕森 2021-07-02 13:04:14
我尝试IFormFile使用邮递员插件上传照片。但是 API 没有从请求正文中获取文件对象。我试过有和没有[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);我发现它没有获取文件,而我正在发送具有相同密钥的 image.jpg "fileStream"。顺便说一句,其他一切正常。我找不到解决此问题的解决方案。如果有人可以帮助我,请告诉我。
查看完整描述

2 回答

?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

该FromBody属性只能在签名一个参数一起使用。发送 的一种选择int vId是通过查询字符串并使用FromQuery属性读取它。


像这样试试


[HttpPost]

public async Task<IActionResult> Upload([FromQuery]int vId, [FromBody]IFormFile fileStream) 

然后将 POST 发送到api/yourController?vId=123456789正文包含IFromFile 的url


更新


由于表单数据将作为键值发送,尝试创建一个包含键的模型并从正文中读取它


public class RequestModel

{

    public IFormFile fileStream { get; set; }

}

然后从身体读取模型


[HttpPost]

public async Task<IActionResult> Upload([FromBody]RequestModel model) 


查看完整回答
反对 回复 2021-07-17
?
一只名叫tom的猫

TA贡献1906条经验 获得超3个赞

终于得到了解决方案。实际上问题出在旧版本的邮递员标签邮递员 - REST 客户端 chrome 扩展。尝试使用新的邮递员应用程序后,它运行得非常好。感谢所有试图解决这个问题的人。结果如下:

//img1.sycdn.imooc.com//60f2874a000132a109880424.jpg

查看完整回答
反对 回复 2021-07-17
  • 2 回答
  • 0 关注
  • 623 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信