2016-10-25 30 views
1

我真的迷失在這種情況下,所以我接受任何提示。閱讀AngularJs上的BLOB文件

一些事實:

什麼需要做的事情:文件的下載和上傳,並以JPG文件的情況下,客戶端必須能夠想象它的瀏覽器。

這BLOB文件可以是任何東西,因爲據我所知,JPG,DOC,PDF ...

我有存儲在我的數據庫的現有的BLOB文件,我要讀它在我的網站,這是AngularJs應用程序。

我的服務器端是一個帶有實體框架的Web Api。

到目前爲止,我已經實現向Angular App發送一個字節[]。但它顯示爲一堆奇怪的字符,如 。在這裏,我已經失去了。

在我的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; 
    } 

我的角碼,recieving數據:

$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" /> 

正如我之前說過的,我真的迷失了,並且接受了sugestions,並且我找不到任何可以幫助我的例子。

提前致謝!

回答

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> 

我測試了上面的代碼,它的工作。

+0

好吧,我最終找到了解決方案,而且它非常像這樣。無論如何,這可能有助於某人。 – Guilherme