【发布时间】:2015-08-03 03:21:18
【问题描述】:
所以我从存储图像的数据库中收集了一个 varbinary(MAX) 值。 它被转换为 byte[],然后目的是在图像控件中显示它。
这是我从数据库中读取的地方
public TemplateData(SqlDataReader dr)
{
initialiseData();
if (dr.HasRows)
{
Logo = (byte[])dr["Logo"];
//Logo = dr["Logo"].ToString();
TemplateId = dr["TemplateId"].ToString();
Comment = dr["Comment"].ToString();
SchemeCode = dr["SchemeCode"].ToString();
Version = dr["Version"].ToString();
}
}
这是值显示在相应控件中的位置
protected void ddSchemeCode_SelectedIndexChanged(object sender, EventArgs e)
{
if (ddSchemeCode.SelectedIndex > 0)
{
// Existing Data to load from database
TemplateData temp = DataClass.ReturnData(ddSchemeCode.SelectedItem.Text);
if (temp != null)
{
txtVersion.Text = temp.Version;
txtComment.Text = temp.Comment;
txtSchemeCode.Text = temp.SchemeCode;
txtTemplateId.Text = temp.TemplateId;
img.Src = temp.Logo;
}
所以目前我将一个 byte[] 传递到一个图像控件的源中,它会改为一个字符串。我尝试使用Convert.ToBase64String(Logo) 和ToString(Logo) 将其转换为字符串,但这些都不起作用。
非常感谢任何帮助。男女老少干杯。
【问题讨论】:
-
是的,很抱歉应该提到。
-
是的,这让它变得更加棘手。如果图像足够小,您可以在现代浏览器中使用
Convert.ToBase64String(您只需使用数据URI 方案,例如data:image/png;base64,TheActualBase64String用于PNG)。如果这不合理,您将必须有一个单独的请求来加载图像,这意味着要么将图像保存在磁盘上,要么有一个HttpHandler来返回实际的图像数据——当然,它通常必须请求再次从服务器获取数据(或者您必须将其保存在Session中,但这也很棘手)。 -
对不起,伙计们,原来它们是旧对象,所以无论如何我都无法像这样显示它们:¬ |为你的努力干杯!