我有一个现有的 API,它正在从请求正文中读取数据:
[HttpPost]
public async Task<IActionResult> Post([FromBody] CreateVm vm)
{
if (!ModelState.IsValid) return BadRequest();
var result = await _service.CreateAsync(vm);
return Ok(result);
}
出现了一个新需求,要求客户端希望随视图模型一起提交图像。我的第一个想法是附加一个IFormFile
对于请求,在不同的服务中处理它并继续:
public async Task<IActionResult> Post([FromBody] CreateVm vm, IFormFile file) { /* ... */}
这种方法的结果是,我收到状态代码 415“不支持的媒体类型”。
使用邮递员我尝试将 Content-Type 设置为multipart/form-data
,无济于事。
这种方法是否可行,或者我是否需要添加一个byte[]
属性到视图模型并从那里解析图像?
我认为表单数据请求[FromForm]
标签应该适合你。
using Microsoft.AspNetCore.Http;
public class CarModelPostDTO {
public string Name { get; set; }
public IFormFile Image { get; set; }
}
[HttpPost("api/car")]
public ActionResult Car([FromForm]CarModelPostDTO carDto)
{
// Getting Name
string name = carDto.Name;
// Getting Image
var image = carDto.Image;
// Saving Image on Server
if (image.Length > 0) {
using (var fileStream = new FileStream(image.FileName, FileMode.Create)) {
image.CopyTo(fileStream);
}
}
return Ok(new { status = true, message = "Car created successfully"});
}
这是一个完整的tutorial https://dottutorials.net/dotnet-core-web-api-multipart-form-data-upload-file/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)