我无法显示生成为byte []的图像

时间:2016-02-19 12:41:59

标签: c# angularjs image

我的控制器(ASP MVC):

 public FileResult getTimelineChart(DateTime tsInic, DateTime tsEnd, string typeReq = "normal")
    {
            var rep = new AfterSalesWind.Models.OM_Repository();
            var chart = rep.getTimelineChart(tsInic, tsEnd);

            System.IO.MemoryStream ms = new System.IO.MemoryStream();
            chart.SaveImage(ms, ChartImageFormat.Png);

            return File(ms.ToArray(), @"image/png");
    }

角度控制器:

getTimelineChart = function (codSap, revStr) {
    dataService.getTimelineChart($scope.dateFilter.dt1, $scope.dateFilter.dt2, function (result) {
        $scope.imageChart = "data:image/png;base64," + result;
    });
}

角度服务:

getTimelineChart = function (tsInic, tsEnd, callback) {
    $http({
        url: '/OM_API/getTimelineChart',
        method: 'POST',
        data: {
            tsInic: tsInic,
            tsEnd: tsEnd
        }
    }).success(function (result, status, headers) {
        return callback(result);
    }).error(function (error) {
        return callback(error);
    });
}

我的HTML:

<div class="row">
    <img ng-src="{{imageChart}}" width="1331" height="360" />
</div>

根据我已阅读此代码应该允许我显示图像png。 出现错误: enter image description here

当我致电服务时,结果如下所示 enter image description here

我哪里错了?

感谢。

2 个答案:

答案 0 :(得分:0)

使用MVC,您将其作为File返回,将其视为真实文件,而不是Base 64编码的内容。您只需将其放在ng-src上即可。

答案 1 :(得分:0)

首先,我不知道这是否是一个好的解决方案,我只知道它对我有用。

我只有在base-64编码时才有显示图像。然后我改变了我对MVC的回复:

 public String getTimelineChart(DateTime tsInic, DateTime tsEnd, string typeReq = "normal")
{
        var rep = new AfterSalesWind.Models.OM_Repository();
        var chart = rep.getTimelineChart(tsInic, tsEnd);

        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        chart.SaveImage(ms, ChartImageFormat.Png);

        return Convert.ToBase64String(ms.ToArray());
}