如何在ASP中从数据库中获取和显示图像.Net和c#

本文关键字:显示 显示图 图像 Net 数据库 ASP 获取 | 更新日期: 2023-09-27 17:49:42

关于使用FileUpload控制器将图像插入数据库中的表中,有很多很好的教程。

然而,我找不到一个好的教程如何获取这些图像并显示它们。

当我在数据库中存储图像名称或路径时(作为Varchar),通过这样做将非常简单…

HTML/ASP:

<img src="" runat="server" id="myImage" />
c#

:

myImage.Src = myReader.getValue(0).toString();
结果:

<img src="/Images/pic.png" runat="server" id="myImage" />

,瞧,图片就会显示出来了。

但是现在我想获取上传的图像,而不是路径,这意味着表列的类型是IMAGE。

一些教程最终会导致全屏显示图片。

我不希望那样,我只是想获取和显示图像的相同方式,它显示在前面的例子中,给定的大小和位置在我的网页。

为什么我要上传图像到数据库?因为这些图片是"个人资料图片",而不是公开图片,我不希望客人简单地浏览/images/找到我的网站的所有图片,公开和私人

如何在ASP中从数据库中获取和显示图像.Net和c#

首先,要做您想做的事情,我只需将文件复制到一个临时位置,并将该位置用于"src"属性。稍后,您可以删除该文件。更复杂的方法是创建一个aspx页面,将图像作为二进制流写入网页。该页面将从数据库中获取图像,并在响应中写入流。然后在图像的src属性中使用这个aspx页面。但是,将映像路径存储在数据库中并将实际文件存储在文件系统中并不意味着该文件夹必须是可浏览的或公开的。您可以关闭目录浏览,例如:

创建一个自定义的IHttpHandler实现,可以从数据库中提供图像。例如,您可以将字节转换为流,并将该流复制到web响应的输出中。

下面是一个简单的例子:

public class MyImageHandler : IHttpHandler
{
    public bool IsReusable { get { return true; } }
    public void ProcessRequest(HttpContext ctx)
    {
        Stream yourStream = ...; // This is where you get your data from your database
        ctx.Response.ContentType = "image/jpeg";
        yourStream.CopyTo(ctx.Response.OutputStream);
    }
}

然后你需要配置它来响应你想要的url。

  • 你可以使用Web。配置文件
  • 或者创建一个.ashx文件,并让它指向你自己的HTTP处理程序

如果你有任何问题,请写评论

您将需要一个aspx页面从数据库读取图像并返回原始字节。

这里有一个快速的草图如何做到这一点:

byte[] data = (byte[])myReader.getValue(0);
Response.ContentType = "image/jpeg"; //or whatever your used image type is
Response.OutputStream.Write(data, 0, data.Length);
Response.End();

另一种方法是为此实现一个自定义HttpHandler。

另一部分是用指定图像id的参数从img标签"调用"此页面:

myImage.Src = "/image.aspx?id=" + myReader.getValue(0).toString();