2013-02-20 3 views
16

Я ищу в своей базе данных изображение как массив байтов. Я хочу показать это содержимое как файл, используя разметку image, но здесь это не работает.AngularJS - Показать содержимое массива байтов как изображение

// Controller which get my image and put into $scope. 
function MyController($scope, $http, $location) { 

    var url = '/json/FindImage?id=1'; 
    $http.get(url).success(function(result) { 
     $scope.image = result.Image; 
    } 
} 

// HTML 
<!-- It doesn't work --> 
<img src="{{image}}" /> 
<!-- It doesn't work also --> 
<img ng-src="{{image}}" /> 

Есть идеи? Спасибо всем!

ответ

57

Использования нг-Src в следующем формате

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

Не забудьте добавить фильтр для санитарной обработки data не быть помечена как unsafe угловых данными

$compileProvider.aHrefSanitizationWhitelist(/^\s*(https?|file|ftp|blob):|data:image\//);

+0

GET: изображение /PNG ;base64,etc.net::ERR_INVALID_URL для меня – amdev

+0

@Assem, даже я получаю net :: ERR_INVALID_URL. Что может быть проблемой. – Hema

+0

@amdev, У разрешили это.? – Hema

-1

Атрибут srcimg указывает на исходный файл изображения, он не содержит фактических исходных данных. Вы не можете делать то, что хотите; вместо этого вам придется писать декодер изображений в JavaScript (например, https://github.com/devongovett/png.js), который выводится в элемент canvas.

2

Если вы можете вернуть серверу в изображение в кодировке base64, вы можете использовать data url в качестве атрибута src.

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