【问题标题】:Image from byte array not showing in view [duplicate]字节数组中的图像未显示在视图中[重复]
【发布时间】:2018-12-07 18:50:03
【问题描述】:

我无法使用其他类似问题的答案来解决这个问题,也许这种情况有所不同。

我正在尝试使用 asp.net 和 mvc 将字节数组转换为图像。

这是我的看法:

<div class="carousel-item">
    <img class="d-block w-100" src="@Url.Action( "Show", "Home", new { id = i.ProductID })" alt="@i.ProductName">
</div>

这是我的控制器中的 Show 方法:

    public ActionResult Show(int id)
    {
        IQueryable<Product> products = from p in db.Products
                                       where id == p.ProductID
                                       select p;

        var imageData = products.First().Picture;

        return File(imageData, "image/jpg");
    }

如果有人能提示我在这里做错了什么,那就太好了。

编辑 我已尝试将字节数组转换为 base64 字符串,作为“可能重复”问题的答案,但这并没有呈现为图像。

【问题讨论】:

  • @NirmalSubedi byte[]
  • 您想将图像转换为 base64 字符串。 stackoverflow.com/q/17952514/2030565.
  • 如果 OP 在 AJAX 请求中请求文件,则只需要进行 base64 编码。 MVC 动作可以返回包含图像、未编码且可从图像标签中使用的字节流。
  • 其他链接中的那些答案实际上并没有帮助。
  • 测试如下:将site/Home/Show/<id>放在浏览器地址栏中,然后使用Chrome开发工具之类的工具查看响应中是否确实获得了有效的JPG文件。我怀疑原始数据不是真正的二进制文件或不是有效的 JPG。

标签: c# asp.net asp.net-mvc


【解决方案1】:

我的 asp.net mvc 项目在我的图像存储在数据库中的方式上存在问题。它们被存储为图像数据类型,但将其更改为 varbinary(MAX) 并使用新的图像路径更新每条记录解决了这个问题。

【讨论】:

    猜你喜欢
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多