在AngularJs上读取BLOB文件

时间:2016-10-25 11:23:30

标签: c# .net angularjs asp.net-web-api blob

我真的迷失在这种情况下,所以我接受任何消化。

一些事实:

需要做什么:下载和上传文件,如果是JPG文件,客户端必须能够在浏览器上将其可视化。

据我所知,这个BLOB文件可以是任何东西,JPG,DOC,PDF ......

我将这些现有的blob文件存储在我的数据库中,我必须在我的网站上阅读它,这是AngularJs App。

我的服务器端是一个带有实体框架的Web Api。

到目前为止,我已经实现了向Angular App发送一个byte []。但它显示为一堆奇怪的字符,如 。在这里,我已经迷路了。

在我的C#类中,我说将收到BLOB文件的var是一个byte []。这甚至是正确的吗?

我认为我有编码问题,因为我无法在HTML上阅读它。我被告知数据库是UTF-16。我相信Angular正在UTF-8上等待它(我怎么能确认它或配置它?)。但我从来没有遇到任何其他数据的编码问题,但当然,它们不是BLOB文件。

我的C#代码返回BLOB数据:

[HttpGet]
    [Route("Download/{documentId}")]
    public HttpResponseMessage Documents(int documentId)
    {
        var document = _unit.Document.Get(documentId);



        var response = new HttpResponseMessage(HttpStatusCode.OK);
        response.Content = new ByteArrayContent(document.BlobFile);
        response.Content.Headers.ContentDisposition = new ContentDispositionHeaderValue("attachment");
        response.Content.Headers.ContentDisposition.FileName = document.Name;

        return response;
    }

My Angular Code,收到数据:

$scope.download = function (documentId) {
            $http.get('Api/Documents/Download/' + documentId)
                .then(function (response) {
                    console.log(response);
                    $scope.test = response.data
                })
        }

在HTML上,我试图像这样读它,假设它是一个图像(不知道它是否是正确的方式),我需要在浏览器上读取它的唯一情况,对于其他每一个我只需要让它可下载(我不知道怎么做,但一次只有一个问题):

<img ng-src="data:image/jpeg;base64,{{teste}}" id="photo-id" />

正如我之前所说的那样,我真的迷失了并且接受了消化,我找不到任何可以帮助我的例子。

提前致谢!

1 个答案:

答案 0 :(得分:3)

C#代码:

[HttpPost]
public string GetCalculatorResults()
{

    byte[] imgArr = GetImageFromDataBase();

    // Here we are converting the byte array to Base64String
    return Convert.ToBase64String(imgArr)
}

HTML和AngularJS源代码应该是

<div ng-app="myApp" ng-controller="myCtrl">

    <img ng-src="data:image/jpeg;base64,{{ imageSrc  }}" />

</div>

<script>
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
    $scope.imageSrc = "";
    $http.get("someurl")
    .then(function(response) {
        $scope.imageSrc = response.data;
    });
});
</script> 

我测试了上面的代码,它的工作原理。