1
背景:我试图在ASP.Net页面上显示来自Ax2012数据库的图像。将AxaptaContainer转换为Byte []或Base64
问题:图像存储在Ax2012数据库中作为一个BLOB(或井,斧头容器)。我必须在我的C#.Net Web服务(通过BusinessConnector连接)中将其转换为Byte数组,或者直接转换为Base64字符串。
我做了什么: 随着如下面的代码,我得到一个异常的imageObject是不可序列。我在某种程度上理解,但我会怎么做呢?
代码背后:
while (axRecord.Found)
{
string workerRecId = axRecord.get_Field("WorkerRecId").ToString();
string name = axRecord.get_Field("Name").ToString();
string image;
using (MemoryStream ms = new MemoryStream())
{
AxaptaContainer imageObject = (AxaptaContainer)axRecord.get_Field("Image");
new BinaryFormatter().Serialize(ms, imageObject);
image = Convert.ToBase64String(ms.ToArray());
}
string wppServiceWarehouse = axRecord.get_Field("WPPServiceWarehouse").ToString();
dataTable.Rows.Add(new object[] { workerRecId, name, image, wppServiceWarehouse });
axRecord.Next();
}
ASP页:
<asp:Image id="employee_ProfilePhoto" runat="server" imageUrl='<%# "data:image/png;base64," + Eval("Image") %>'/>
我也试了一下强制转换为字符串,在这种情况下,我没有得到任何异常抛出,也没有图像;)
有什么建议吗?
感谢
谢谢马捷,将会给它一试早上! –