我正在将base64图像转换为byte[]
并将其存储在SQL Server的varbinary
列中。我想从数据库中获取图像并将其设置为ASP.NET image
的图像URL。
我该怎么做?
将图像写入数据库的代码:
string str= myBase64.Value.Substring(17);
byte[] myByte = Convert.FromBase64String(str);
答案 0 :(得分:3)
尝试这样的事情
<img src="GetBinary.aspx?id=123" />
或
<asp:Image ID="img" runat="server" ImageUrl="GetBinary.aspx?id=123" />
然后在GetBinary page_load中(或者如果是MVC,则使用返回null的操作)。
//resp is HttpResponseBase or just use Response.
resp.AddHeader("content-disposition", "attachment;filename=" + fileName);
resp.BinaryWrite(myByte);
resp.Flush();
resp.End();
编辑:这是ASHX版本
<%@ WebHandler Language="C#"
CodeBehind="AssetHandler.ashx.cs" Class="NameSpace.AssetHandler" %>
//-- codebehind
public class AssetHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
// place response code here using context.Response
}
}
答案 1 :(得分:2)
如果图像很小,请查看data URI。您可以将图像数据放入链接本身。如果您有byte[]
,请在其上使用Convert.ToBase64String
。根据规格格式化URI,瞧,这是图像。但就像我说的那样,请注意规格,大小限制,older browsers等。对于小图标等,我肯定会使用数据URI。