2016-10-25 4 views
1

Я действительно потерялся в этой ситуации, поэтому я принимаю любые санкции.Чтение BLOB-файла на AngularJs

Некоторые факты:

Что необходимо сделать: Загрузка и выгрузка файлов, а также в случае файла JPG, клиент должен иметь возможность визуализировать его в браузере.

Этот файл BLOB может быть что угодно, насколько я знаю, JPG, DOC, PDF ...

У меня есть те существующие файлы двоичных объектов, хранящихся в моей БД, и я должен прочитать на моем сайте, который является AngularJs App.

My Server-side - это веб-приложение Api с платформой Entity Framework.

До сих пор я достиг, чтобы отправить байт [] в Угловое приложение. Но это проявляется как куча странных персонажей, таких как . И здесь я уже потерян.

В моем классе C# я сказал, что var, который получит BLOB-файл, является байтом []. Это даже правильно?

Я считаю, что у меня проблемы с кодировкой, поскольку я не могу прочитать его в HTML. Мне сказали, что DB находится на 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; 
    } 

Мой Угловое код, ПОЛУЧАТЬ данные:

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

Как я уже говорил, я действительно потерял и принял приговор, и я не смог найти ни одного примера, который мог бы мне помочь.

Заранее благодарен!

ответ

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

Смежные вопросы