【问题标题】:Make IFormFile function to work with model使 IFormFile 函数与模型一起工作
【发布时间】:2017-05-11 13:25:25
【问题描述】:

我的控制器中有一个函数,它接收由 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 时失败,但我不确定如何使用该模型。任何帮助表示赞赏。

【问题讨论】:

    标签: asp.net-core-mvc .net-core


    【解决方案1】:

    您收到的错误消息是什么?您用于发送 API 请求的客户端代码是什么?

    您必须使用 FormData 对象并用所需的属性填充 FormData 对象。

    var formData = new FormData();
    formData.append(add PhotoViewModel properties)
    formData.append(userimage, <file>);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-04
      • 1970-01-01
      • 1970-01-01
      • 2022-06-14
      • 1970-01-01
      相关资源
      最近更新 更多