【问题标题】:Converting AxaptaContainer to either Byte[] or Base64将 AxaptaContainer 转换为 Byte[] 或 Base64
【发布时间】:2015-07-28 11:55:55
【问题描述】:

背景:我正在尝试在 ASP.Net 页面上显示来自 Ax2012 DB 的图像。

问题:图像作为 BLOB(或者说是 Ax 容器)存储在 Ax2012 DB 中。我必须在我的 C#.Net 网络服务(通过 BusinessConnector 连接)中将其转换为字节数组,甚至直接转换为 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") %>'/>

我也尝试将它转换为字符串,在这种情况下我不会抛出异常,但也没有图像;)

有什么建议吗?

谢谢

【问题讨论】:

    标签: c# asp.net axapta dynamics-ax-2012 business-connector


    【解决方案1】:

    您必须将容器转换为 base64 编码的 PNG。

    您可以将此方法添加到HcmPersonImage(或任何其他)表中:

    public str getImageAsBase64png()
    {
        Image   imgObj;
        BinData bd;
        str result;
    
        if (this.Image)
        {
            imgObj = new Image(this.Image);
            imgObj.saveType(ImageSaveType::PNG);
    
            bd = new BinData();
            bd.setData(imgObj.getData());
            result = bd.base64Encode();
        }
        else
        {
            result = "";
        }
        return result;
    }
    

    然后在.cs后面的代码中调用getImageAsBase64png

    axRecord.Call('getImageAsBase64png');
    

    【讨论】:

    • 谢谢 Matej,明天早上试试!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-02
    • 2011-06-08
    • 2011-06-17
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多