gpt4 book ai didi

asp.net - 在 ASP.NET 中显示 SQL Server 数据库中的图像的最佳方式是什么?

转载 作者:行者123 更新时间:2023-12-02 09:42:26 25 4
gpt4 key购买 nike

我有一个 SQL Server 数据库,它返回图像的字节。如果我使用表适配器向导并将其设置为我的存储过程和预览数据,它会拉回图像。它会自动将其转换为预览数据中的图像。我不认为它是一串整数或任何东西。

如何使用 gridview 和 objectdatasource 在我的 asp.net 网页上显示它?

我已经搜索并发现图像字段可以指向另一个页面上进行字节转换的网址,但我不确定这是最好的。我找到了另一种创建临时文件的方法。

只是想看看最好的方法。

编辑 - 我试图不使用临时文件。如果我不能使用 gridview,则常规图像字段也可以。

asp.net 2.0,c#。

感谢您的帮助。

编辑

最终结果是:

   protected void Page_Load(object sender, EventArgs e)
{
string id = Request["id"];
string connstr = "DSN=myserver";
OdbcConnection conn = new OdbcConnection(connstr);
OdbcCommand cmd = new OdbcCommand("{call mySP (?)}", conn);
cmd.CommandType = CommandType.StoredProcedure;

// Add the input parameter and set its properties.
OdbcParameter parameter = new OdbcParameter();
parameter.ParameterName = "@MyParam";
parameter.OdbcType = OdbcType.VarChar;
parameter.Direction = ParameterDirection.Input;
parameter.Value = id;

// Add the parameter to the Parameters collection.
cmd.Parameters.Add(parameter);
conn.Open();
OdbcDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
byte[] buffer = (byte[])dr[0];
Response.ContentType = "image/jpg";
Response.BinaryWrite(buffer);
Response.Flush();
}
}

调用页面上是这样的:

<asp:Image ID="Image1" ImageAlign="Middle" ImageUrl="show.aspx?id=123" Runat="server" />

最佳答案

两个选项:

创建临时文件 - 这种方法的问题是您必须创建该文件,这意味着您的网站必须具有对目录的写访问权,这不是一件好事。您还需要有一种方法来清理图像。

从另一个 URL 提供服务 - 这是我的首选方法,因为您不需要磁盘访问。简单的 http 处理程序 (ashx) 是提供图像的好方法。

编辑

如果您需要 ashx 中的 session 状态,请查看:Asp.net System.Web.HttpContext.Current.Session null in global.asax

编辑

还有更多想法。在某些情况下,使用临时文件可能会更好。例如,如果很多用户经常请求您的图像。然后将图像存储在磁盘上就有意义了,因为您可以写入一次文件,这确实会增加维护复杂性,但根据流量,这可能是值得的,因为这可以让您避免回调到 .net 堆栈并利用 IIS静态内容的缓存。

关于asp.net - 在 ASP.NET 中显示 SQL Server 数据库中的图像的最佳方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/612342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com