C# 在AngularJs上读取BLOB文件

C# 在AngularJs上读取BLOB文件,c#,.net,angularjs,asp.net-web-api,blob,C#,.net,Angularjs,Asp.net Web Api,Blob,我真的很迷茫,所以我接受任何建议 一些事实: 需要做什么:下载和上传文件,如果是JPG文件,客户端必须能够在浏览器上可视化它 这个BLOB文件可以是任何东西,据我所知,JPG,DOC,PDF 我的数据库中存储了这些现有的blob文件,我必须在我的网站上阅读,这是AngularJs应用程序 我的服务器端是一个带有实体框架的Web Api 到目前为止,我已经实现了向Angular应用程序发送字节[]。但它显示为一组奇怪的字符,例如�. 在这里,我已经迷路了 在我的C#类中,我说过接收BLOB文件的变

我真的很迷茫,所以我接受任何建议

一些事实:

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

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

我的数据库中存储了这些现有的blob文件,我必须在我的网站上阅读,这是AngularJs应用程序

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

到目前为止,我已经实现了向Angular应用程序发送字节[]。但它显示为一组奇怪的字符,例如�. 在这里,我已经迷路了

在我的C#类中,我说过接收BLOB文件的变量是一个字节[]。这是对的吗

我相信我有编码问题,因为我不能在HTML上阅读它。我听说DB在UTF-16上。我相信Angular正在UTF-8上等待它(我如何确认或配置它?)。但我从未遇到过任何其他数据的编码问题,但当然,它们不是BLOB文件

返回BLOB数据的C#代码:

[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;
    }
我的角度代码,接收数据:

$scope.download = function (documentId) {
            $http.get('Api/Documents/Download/' + documentId)
                .then(function (response) {
                    console.log(response);
                    $scope.test = response.data
                })
        }
在HTML上,我尝试这样阅读它,假设它是一个图像(不知道这是否是正确的方式),唯一需要在浏览器上阅读的情况是,对于其他情况,我只需要使其可下载(我不知道如何下载,但一次一个问题):


正如我之前所说的,我真的迷失了方向,接受建议,到目前为止,我找不到任何能帮助我的例子

提前谢谢

C#代码:

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> 

var-app=angular.module('myApp',[]);
app.controller('myCtrl',函数($scope,$http){
$scope.imageSrc=“”;
$http.get(“someurl”)
.然后(功能(响应){
$scope.imageSrc=response.data;
});
});

我测试了上面的代码,它运行正常。

好吧,我最终找到了解决方案,非常像这样。无论如何,谢谢,这可能会对某些人有所帮助。您的C#代码有[httPost]属性,但您使用$http.get调用它。这是一个错误吗?
[HttpPost]
public string GetCalculatorResults()
{

    byte[] imgArr = GetImageFromDataBase();

    // Here we are converting the byte array to Base64String
    return Convert.ToBase64String(imgArr)
}
<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>