Chrome和Firefox不会显示数据库中的图像

时间:2016-02-25 12:09:07

标签: asp.net entity-framework google-chrome gridview file-upload

我在使用Chrome和Firefox上的Entity FrameWork 6从数据库中检索图像时遇到问题,我对Internet Explorer没有这个问题。这是第三种方法"我尝试过并且都达到了相同的结果。 它是一个简单的Web应用程序,可以保存和检索数据库中的图像,文本和数字列工作正常,只有图像不起作用。

SaveMethod

protected void btnSave_Click(object sender, EventArgs e)
{
// Code for Save Image
if (FUImage.HasFile)
{
    int length = FUImage.PostedFile.ContentLength;
    byte[] img = new byte[length];
    FUImage.PostedFile.InputStream.Read(img, 0, length);
    ImageGallery ig = new ImageGallery
    {
        SLID = 0,
        ImageTitle = txtImageTitle.Text.Trim(),
        Picture = img
    };
    using (MyDatabaseEntities1 dc = new MyDatabaseEntities1())
    {
        dc.ImageGalleries.Add(ig);
        dc.SaveChanges();
        lblMsg.Text = "Successfully Saved";

        // populate Gallery image Here
        PopulateGallery();
    }
}
}

选择方法

private void PopulateGallery()
{
// here code for populate image gallery
using (MyDatabaseEntities1 dc = new MyDatabaseEntities1())
{
    List<ImageGallery> imgGallery = new List<ImageGallery>();
    imgGallery = dc.ImageGalleries.ToList();
    gvGallery.DataSource = imgGallery;
    gvGallery.DataBind();
}
}

转换方法

protected string GetImageString64(byte[] Image)
{
// For convert byte image to base 64 string
string base64String = Convert.ToBase64String(Image, 0, Image.Length);
return "data:image/png;base64 ," + base64String;
}

GridView中带有Eval的模板

                    <asp:TemplateField ItemStyle-Width="150px">
                    <ItemTemplate>
                        <asp:Image ID="Image1" runat="server" Width="100px" ImageUrl='<%#Eval("Picture").ToString() == ""?"": GetImageString64((byte[])Eval("Picture")) %>' />
                    </ItemTemplate>
                    </asp:TemplateField>

问题是网络应用程序在IE浏览器中运行完美,但在Chrome和Firefox中并不存在,我无法在任何地方找到anwaser,顺便说一句,我是aspnet的先机,我只需要一个保存和检索图像的网站,不需要与实体在一起,所以任何解决方案或消化都会感激不尽。

感谢大家。

1 个答案:

答案 0 :(得分:1)

只保存数据库表中的文件名并将图像保存在服务器路径中,并从aspx页面上的服务器调用图像...