C# 为什么file=null? [路由(“api/文件”)] [产生(“应用程序/json”)] [使用(“应用程序/json”、“应用程序/json修补程序+json”、“多部分/表单数据”)] [ApiController] 公共类文件控制器:ControllerBase { 公共文件控制器() { } [HttpPost] 公共异步任务PostProfilePicture([FromQuery]格式文件) { var stream=file.OpenReadStream(); var name=file.FileName; 返回null; } }
邮递员 调试 在结束文件中=nullC# 为什么file=null? [路由(“api/文件”)] [产生(“应用程序/json”)] [使用(“应用程序/json”、“应用程序/json修补程序+json”、“多部分/表单数据”)] [ApiController] 公共类文件控制器:ControllerBase { 公共文件控制器() { } [HttpPost] 公共异步任务PostProfilePicture([FromQuery]格式文件) { var stream=file.OpenReadStream(); var name=file.FileName; 返回null; } },c#,asp.net-core,asp.net-core-webapi,C#,Asp.net Core,Asp.net Core Webapi,邮递员 调试 在结束文件中=null 如何解决此问题?您需要更改属性,该属性选择模型绑定器将从中解析IFormFile实例的源。将[FromQuery]改为[FromForm]: [Route("api/file")] [Produces("application/json")] [Consumes("application/json", "application/json-patch+json", "multipart/form-data")] [ApiController] public
如何解决此问题?您需要更改属性,该属性选择模型绑定器将从中解析
IFormFile
实例的源。将[FromQuery]
改为[FromForm]
:
[Route("api/file")]
[Produces("application/json")]
[Consumes("application/json", "application/json-patch+json", "multipart/form-data")]
[ApiController]
public class FileController : ControllerBase
{
public FileController()
{
}
[HttpPost]
public async Task<IActionResult> PostProfilePicture([FromQuery]IFormFile file)
{
var stream = file.OpenReadStream();
var name = file.FileName;
return null;
}
}
public异步任务PostProfilePicture([FromForm]ifformfile)
您需要更改选择源的属性,模型绑定器将从中解析IFormFile
实例。将[FromQuery]
改为[FromForm]
:
[Route("api/file")]
[Produces("application/json")]
[Consumes("application/json", "application/json-patch+json", "multipart/form-data")]
[ApiController]
public class FileController : ControllerBase
{
public FileController()
{
}
[HttpPost]
public async Task<IActionResult> PostProfilePicture([FromQuery]IFormFile file)
{
var stream = file.OpenReadStream();
var name = file.FileName;
return null;
}
}
public异步任务PostProfilePicture([FromForm]ifformfile)
您将以x-www-form-urlencoded
的形式发送。您必须将其作为多部分/表单数据发送
。文件上载只能在此模式下进行,因此在所有其他模式下,ifformfile
也将为null
x-www-form-urlencoded
是默认模式,仅用于在请求正文中发送密钥/值编码对
另外,
[FromQuery]
也不是必需的,因为您不能通过查询参数上传文件 您将以x-www-form-urlencoded
的形式发送。您必须将其作为多部分/表单数据发送
。文件上载只能在此模式下进行,因此在所有其他模式下,ifformfile
也将为null
x-www-form-urlencoded
是默认模式,仅用于在请求正文中发送密钥/值编码对
另外,
[FromQuery]
也不是必需的,因为您不能通过查询参数上传文件 我猜您从ifformfile
中得到的是null,因为您在Controller类上指定了此操作所需的属性,而不是在Controller方法上。按以下方式更新代码将解决此问题
public async Task<IActionResult> PostProfilePicture([FromForm]IFormFile file)
[路由(“api/文件”)]
[ApiController]
公共类文件控制器:ControllerBase
{
公共文件控制器()
{
}
[HttpPost]
[产生(“应用程序/json”)]
[使用(“多部分/表单数据”)]
公共异步任务PostProfilePicture([FromForm]格式文件)
{
var stream=file.OpenReadStream();
var name=file.FileName;
返回null;
}
}
希望这能解决您的问题。我猜您从
ifformfile
中得到的是null,因为您在控制器类上指定了此操作所需的属性,而不是在控制器方法上。按以下方式更新代码将解决此问题
public async Task<IActionResult> PostProfilePicture([FromForm]IFormFile file)
[路由(“api/文件”)]
[ApiController]
公共类文件控制器:ControllerBase
{
公共文件控制器()
{
}
[HttpPost]
[产生(“应用程序/json”)]
[使用(“多部分/表单数据”)]
公共异步任务PostProfilePicture([FromForm]格式文件)
{
var stream=file.OpenReadStream();
var name=file.FileName;
返回null;
}
}
希望这能解决您的问题。删除
[FromQuery]
部分,因为它不是查询的一部分(查询是url中问号?key=value&key2=value2
后面的部分)。删除[FromQuery]
部分,因为它不是查询的一部分(查询是url中问号?key=value&key2=value2
)后面的一部分,也可以是file=null。如果属性->[FromForm]@Ааааааааааааааааааааа107→text/html;charset=utf-8。如何获取多部分/表单数据?另文件=null。如果属性->[FromForm]@Аццццццццццццццццццццц1094→text/html;charset=utf-8。如何获取多部分/表单数据?我遇到了类似的问题,我在此处发布了我的答案:我遇到了类似的问题,我在此处发布了我的答案: