我的控制器中有一个函数,它接受ajax调用发送的文件并将其保存到指定的路径。我想知道如何使用模型来完成这项工作,因为我希望发送的数据不仅仅是图像。
视图模型:
public class PhotoViewModel
{
// Other strings
public IFormFile userimage { get; set; }
}
控制器:没有型号(工作)
[HttpPost]
public async Task<IActionResult> Post(IFormFile file)
{
var filePath = Path.GetFullPath(@"C:\Users\me\documents\" + file.FileName);
if (file.Length > 0)
{
using (var stream = new FileStream(filePath, FileMode.Create))
{
await file.CopyToAsync(stream);
}
}
return StatusCode(200);
}
使用型号
尝试使用版本[HttpPost]
public async Task<IActionResult> PhotoData(PhotoViewModel model)
{
var filePath = Path.GetFullPath(@"C:\Users\me\documents\" + model.userimage.FileName);
if (ModelState.IsValid)
{
if (model.userimage.Length > 0)
{
using (var stream = new FileStream(filePath, FileMode.Create))
{
await model.userimage.CopyToAsync(stream);
}
}
}
return StatusCode(200);
}
这种尝试并没有让我走得太远。通过设置断点,我可以看到它在设置filePath时失败,但我不确定如何使用该模型。任何帮助表示赞赏。
答案 0 :(得分:0)
您收到的错误消息是什么以及您用来发送API请求的客户端代码是什么?
您必须使用FormData对象并使用所需的属性填充FormData对象。
var formData = new FormData();
formData.append(add PhotoViewModel properties)
formData.append(userimage, <file>);