首页 > 解决方案 > 从控制器发送 IFormFile - Asp Net Core

问题描述

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

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

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

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

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

问候,

标签: fileasp.net-coreupload.net-coreasp.net-core-2.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

推荐阅读