【问题标题】:Send IFormFile back from controller - Asp Net Core从控制器发送 IFormFile - Asp Net Core
【发布时间】:2018-11-25 22:24:56
【问题描述】:

我正在使用 IFormFile 接口上传一些文件

    <input required asp-for="FeaturedPhoto" type="file" />

文件已正确上传,但现在我想将其加载回我的模型中,以便在编辑视图中使用它。

图片正在上传到服务器,只有路径和名称被保存到数据库中。

    obj.FeaturedPhoto = new FormFile(); // Need help building this

问候,

【问题讨论】:

  • 我不认为您可以将文件加载到表单中,但是您可以通过公开流来显示该文件,它是什么类型的文件?
  • 我正在处理图片
  • 不是你想要的,但我建议显示图像,如果有人想覆盖图像,只需一个复选框。将图像的路径存储在隐藏的输入字段中。
  • 为什么不简单地将 base64 编码的字符发送回客户端?

标签: file asp.net-core upload .net-core asp.net-core-2.1


【解决方案1】:

您可以将上传的文件作为base64编码的字符串返回:

    [ProducesResponseType(200, Type = typeof(string))]
    public async Task<IActionResult> UploadImage(IFormFile file)
    {
        // your other code
        if (file.Length > 0)
        {
            using (var ms = new MemoryStream())
            {
                file.CopyTo(ms);
                var fileBytes = ms.ToArray();
                string s = Convert.ToBase64String(fileBytes);
                return new OkObjectResult(s);
            }
        }
    }

在客户端,您可以像这样显示图像:

    <img src="data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAAAUA
    AAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO
        9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="test image" />

要使用上述内容,您需要知道 ContentType。您可以通过以下方式找到它:

    file.ContentType

【讨论】:

  • @Isotov 你试过这个吗?你的问题解决了吗?
猜你喜欢
  • 2021-03-30
  • 2021-07-16
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 2021-11-11
  • 2022-07-27
  • 2018-01-18
  • 1970-01-01
相关资源
最近更新 更多