Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我试图在web表单中显示不同用户的图像_C#_Asp.net_Linq To Sql_Webforms - Fatal编程技术网

C# 我试图在web表单中显示不同用户的图像

C# 我试图在web表单中显示不同用户的图像,c#,asp.net,linq-to-sql,webforms,C#,Asp.net,Linq To Sql,Webforms,我正在做的项目基本上有一个评论模块。用户可以发布帖子,帖子会受到评论的影响。我已经完成了大部分工作,但我仍然停留在需要在所有帖子和评论中加载所有图片的地方 每个用户的个人资料图片(缩略图)我想显示在他/她的帖子旁边。图像存储在数据库中,而不是文件系统中。我试过很多方法,但似乎都不管用 下面是我如何从数据库中检索字节数组(图像数据) TestDBDataContext context1 = new TestDBDataContext(); var r = (from a in c

我正在做的项目基本上有一个评论模块。用户可以发布帖子,帖子会受到评论的影响。我已经完成了大部分工作,但我仍然停留在需要在所有帖子和评论中加载所有图片的地方

每个用户的个人资料图片(缩略图)我想显示在他/她的帖子旁边。图像存储在数据库中,而不是文件系统中。我试过很多方法,但似乎都不管用

下面是我如何从数据库中检索字节数组(图像数据)

TestDBDataContext context1 = new TestDBDataContext();

        var r = (from a in context1.ImageTables where a.Id == 8 select a).First();

        MemoryStream stream = new MemoryStream(r.FileImage.ToArray());
方法1:(由于某些原因,该方法不起作用,它显示了一个扩展名为.aspx.jpeg的不可见图像,并且它似乎已损坏)

web表单上的html图像标记

<img src="WebForm1.aspx" alt="" />
方法2 尝试将图像保存为System.Drawing.image对象,然后将图像src链接到该对象。这种方法是可行的,但是如果我不能一次检索和显示多个图像,那么将图片放在数据库中是没有意义的

        TestDBDataContext context1 = new TestDBDataContext();

        var r = (from a in context1.ImageTables where a.Id == 8 select a).First();

        MemoryStream stream = new MemoryStream(r.FileImage.ToArray());

        System.Drawing.Image newImage;

        newImage = System.Drawing.Image.FromStream(stream);
        Random random = new Random();
        newImage.Save("D:\\" + random.Next(1000, 5000) + ".jpeg");

我希望你们愿意让我走上正轨!非常感谢

在我们的例子中,当我们试图显示从数据库读取的图像时,我们通常创建一个
HttpHandler
并设置图像,例如:

Logo.ImageUrl = "~/Handlers/GetTempLogo.ashx?LogoGUID=" + Session["TempLogoGUID"];
在处理程序中,我们有:

using (aDataContext db = new aDataContext())
            {
                var objData = (from c in db.Companies where c.CompanyId == CompanyID select c.LogoSmall).FirstOrDefault();
                if (objData == null)
                {
                    context.Response.BinaryWrite(System.IO.File.ReadAllBytes(HttpContext.Current.Server.MapPath("~/Images/defaultLogo.png")));

                    return;
                }
                using (System.IO.MemoryStream str = new System.IO.MemoryStream(objData.ToArray(), true))
                {
                    str.Write(objData.ToArray(), 0, objData.ToArray().Length);
                    Byte[] bytes = str.ToArray();
                    context.Response.BinaryWrite(bytes);
                }
            }

希望这能给你一个提示。

为什么要使用.aspx?为什么不是定制的httpHendler?关于如何创造亨德勒的更多信息,我脑子里突然冒出了同样的想法。。httpHandlerwebforms确实实现了IHttpHandler!
using (aDataContext db = new aDataContext())
            {
                var objData = (from c in db.Companies where c.CompanyId == CompanyID select c.LogoSmall).FirstOrDefault();
                if (objData == null)
                {
                    context.Response.BinaryWrite(System.IO.File.ReadAllBytes(HttpContext.Current.Server.MapPath("~/Images/defaultLogo.png")));

                    return;
                }
                using (System.IO.MemoryStream str = new System.IO.MemoryStream(objData.ToArray(), true))
                {
                    str.Write(objData.ToArray(), 0, objData.ToArray().Length);
                    Byte[] bytes = str.ToArray();
                    context.Response.BinaryWrite(bytes);
                }
            }