微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

asp.net core 3.1 Razor Pages 将图像作为字节 [] 加载到视图中

如何解决asp.net core 3.1 Razor Pages 将图像作为字节 [] 加载到视图中

我希望在这方面得到一些帮助,因为我在这方面花了太长时间。

我必须在 Intranet 应用程序上保存许多小文件。 我将我的图像作为 type=file

  <abp-input asp-for="Storage.File" type ="file" />

将其传递给 IForm

    public IFormFile File { get; set; }

在 OnPostAsync 中将其转换为 byte[] 并保存。

  public async Task<IActionResult> OnPostAsync()
    {
        using (var memoryStream = new MemoryStream())
        {
            //turn it into a memory stream file is an IFormFile
            await Storage.File.copyToAsync(memoryStream);
            //pass the byte[] to Content
            Storage.Content = memoryStream.ToArray();
        }

然后在另一端我将它提取一个流,将它转换为一个表单文件并使用这个伟大的 SO post - How to deal with input=file / IFormFile two-way binding in Razor Pages

        string imgType = "data:" + GetMimeTypes(Storage) + ";base64,";
        string filename = Storage.Name + Storage.ImageExt;

        var input = Storage.Content;
        using var stream = new System.IO.MemoryStream(input);
        var formFile = new FormFile(stream,stream.Length,Storage.Name,Storage.Name);

        formFile.Headers = new HeaderDictionary()
            {
                new keyvaluePair<string,StringValues>("Content-disposition",$"form-data; name=\"{Storage.Name}\"; filename=\"{filename}\""),//"form-data; name=\"chicken\"; filename=\"chicken.png\""
                new keyvaluePair<string,StringValues>("Content-Type",imgType ),// "data:image/png;base64,"
            };
        Storage.Image = formFile;

到这里我得到数据

enter image description here

然后我将它传递给 IFormFile

    [DataType(DataType.Upload)]
    [FromForm(Name = "Image")]
    public IFormFile Image { get; set; }

最后在 Razor 页面中列出了一些失败的结构

        2<img src="Storage.Image" />
       

遗憾的是,这就是我结束的地方,没有图像,src 中也没有任何内容

我尝试过类似的 <img src="Storage.Image" /> 甚至 <abp-input asp-for="Storage.Image" type ="image"/>。遗憾的是没有成功。

所有的数据都是以<abp-input asp-for="Storage.Name"/>等class.property的结构传入的 非常感谢

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。