将 System.Byte[] 转换为字符串或图像格式



我们有 C# MVC 模型 Web 应用程序从甲骨文接收和集成的 blob 数据存在以下代码

    foreach (DataRow oRow in oDataTable.Rows)
    {
    Rel oUnitData = new Rel();
    if (!string.IsNullOrEmpty(oRow["LOG_SNAP"].ToString()))
    oUnitData.imgdisp = oRow["LOG_SNAP"].ToString();
     lUnitData.Add(oUnitData);
    }
    and for display using javascript file in that datatables 
    following part of code
    { data: 'imgdisp', "render": function (data) {
    var str = data
    var base64string = Convert.ToBase64String(str);
    return '<img src="data:image/jpeg;base64,+ base64_decode(str)+">';
    }
    Java Script Code 
------------------------------------------------
function LoadImageDispData() {
       var jsontext = JSON.stringify({
       });
       $.ajax({
           url: '/Rel_ProjectStatusUpdate.aspx/LoadImageDisp',
           data: jsontext,
           type: 'POST',
           async: true,
           contentType: 'application/json; charset=utf-8',
           dataType: 'json',
           success: function (result) {
               if (result.d != null) {
                   oTableData = $("#tbl_imagedisp").dataTable().fnDestroy();
                   oTableData = $("#tbl_imagedisp").DataTable({
                       data: result.d,
                       responsive: true,
                       "bAutoWidth": true,
                       "bPaginate": true,
                       "bInfo": true,
                       "bFilter": true,
                       "aoColumns": [

                     { data: 'imgdisp', "render": function (data) {
                         var str = data
                         var base64string = Convert.ToBase64String(str);
                         alert(base64string);
                         return '<img src="data:image/jpeg;base64,+ base64_encode($str)+">';

                     }
                     }

                 ],
                       "columnDefs": [
                    { "visible": false, "targets": [] },
                { className: "dt-left", "targets": [] },
                { className: "dt-center", "targets": [] },
              { className: "dt-right", "targets": [] }
        ],
                       //"order": [[1, 'asc']],

                       dom: 'Bfrtip',
                       buttons: ['copy', 'excel'],
                       "aLengthMenu": [[25, 50, 75, -1], [25, 50, 75, "All"]],
                       "iDisplayLength": 25,
                       "bAutoWidth": true,
                       "language": {
                           //                  
                           //                    "zeroRecords": "Nothing found - sorry",
                           //                    "infoEmpty": "No records available"
                           "emptyTable": "No data available in table"
                       }

                   });
               }
               else {

               }
           }
       });
   }
Data Base Layer Code 
----------------------------------------
public DataTable GetImageDisp()
        {
            DataTable oDataTable = new DataTable();
            try
            {
                LoggingManager.LogDetails("WebSiteModel-Begin GetImageDisp");
                List<OracleParameter> lParameterList = new List<OracleParameter>();
                lParameterList.Add(new OracleParameter("O_IMGDATA", OracleDbType.RefCursor, ParameterDirection.Output));
                oDataTable = this.GetDataTableREL("REL_GET_IMAGEDISP", lParameterList);

                if (oDataTable != null)
                    LoggingManager.LogDetails("WebSiteModel-End GetImageDisp", string.Format("GetImageDisp Data Count:{0}", oDataTable.Rows.Count));
                else
                    LoggingManager.LogDetails("WebSiteModel-End GetImageDisp", string.Format("GetImageDisp Data Count:null"));
            }
            catch (Exception oException)
            {
                LoggingManager.LogDetails("WebSiteModel-Exception GetImageDisp", oException);
                ExceptionManager.LogSiteException(oException, "DrishtiCane.Model.WebSite.Implementation.WebSiteModel::GetImageDisp");
            }
            return oDataTable;
        }

Business Layer
--------------------------------
public List<Rel> GetImageDisp()
        {
            DataTable oDataTable = null;
            List<Rel> lUnitData = new List<Rel>();
            try
            {
                LoggingManager.LogDetails("WebSiteIntegration-Begin GetImageDisp");
                oIWebSiteModel = this.ModelFactory.CreateObject<IWebSiteModel>();
                oDataTable = oIWebSiteModel.GetImageDisp();
                if (oDataTable != null)
                {
                    if (oDataTable.Rows != null && oDataTable.Rows.Count > 0)
                    {
                        foreach (DataRow oRow in oDataTable.Rows)
                        {
                            Rel oUnitData = new Rel();
                            if (!string.IsNullOrEmpty(oRow["LOG_SNAP"].ToString()))
                                oUnitData.imgdisp = oRow["LOG_SNAP"].ToString();

                            lUnitData.Add(oUnitData);
                        }
                    }
                    else
                        lUnitData = null;
                }
                else
                    lUnitData = null;
                if (lUnitData != null)
                    LoggingManager.LogDetails("WebSiteIntegration-End GetImageDisp", string.Format("GetImageDisp Data Count:{0}", lUnitData.Count));
                else
                    LoggingManager.LogDetails("WebSiteIntegration-End GetImageDisp", string.Format("GetImageDisp Data Count:null"));
                // LoggingManager.LogDetails("End GetSubCMasterData", string.Format("Legend List Count:{0}", lVillageMasterList.Count));
            }
            catch (Exception oException)
            {
                LoggingManager.LogDetails("WebSiteIntegration-Exception GetImageDisp", oException);
                ExceptionManager.LogSiteException(oException, "DrishtiCane.Integration.WebSite.Implementation.WebSiteIntegration::GetImageDisp");
            }
            return lUnitData;
        }

Code Behind .aspx file
-----------------------------------------
[WebMethod(EnableSession = true)]
        public static List<Rel> LoadImageDisp()
        {
            List<Rel> lDatalist = new List<Rel>();
            try
            {
                IControlViewController oIControlViewController = oContollerFactory.CreateObject<IControlViewController>();
                lDatalist = oIControlViewController.GetImageDisp();
            }
            catch (Exception oException)
            {
                ExceptionManager.LogSiteException(oException, "DrishtiCane.SiteView.Report:LoadImageDisp");
            }
            return lDatalist;
        }

我们有从oracle接收的C# MVC模型Web应用程序blob数据,并在集成中存在以下代码

公平地说,我无法理解您的代码。而且我不确定为什么要生成 img 标签,而不是创建一个可以返回实际图像的端点。但是,您对 img 标签的一个问题是它需要一个以 base 64 格式编码的字符串,我不确定您的"str"是什么数据类型。

实质上,要在 C# 中创建 base64 字符串,可以使用以下内容:

var byteArray = Encoding.UTF8.GetBytes(data); 
var base64String = Convert.ToBase64String(byteArray);

您可能需要在问题中包含更多信息,以便获得更好的回答。

最新更新