2015-10-08 3 views
1

У меня есть поток файлов в моем контроллере. Теперь я хочу загрузить такой файл как файл. Мой код приведен ниже ....Загрузить файл как файл в angularjs

<file-download file-data="{{uploadedFl.fileSrc}}" filename="{{uploadedFl.fileName}}"> 
</file-download> 

JS

.directive('fileDownload', function() { 
    return { 
     restrict: 'E', 
     template: '<a target="_self" href="" class="btn btn-primary" ng-click="downloadData()" > <i class="fa fa-download"></i></a>', 
     scope: true, 
     link: function(scope, element, attr) { 

      var anchor = element.children()[0]; 
      $(anchor).attr({ 
       href: attr.fileData, 
       download: attr.filename 
      }); 
      // Also overwrite the download pdf function to do nothing. 
      scope.downloadData = function() { 

      }; 
     } 
    } 
}); 

поток файла приведен ниже ..

"data:text/plain;base64,I...AgICAgfQ==" 
+0

Кажется, вы не устанавливаете заголовки содержимого на сервере. Следовательно, brower предоставляет вам необработанные данные. – harishr

+0

Вы попробовали 'window.open (stream, '_blank', ''); '? –

+0

window.open работает для uri not stream. –

ответ

0

Я думаю, что вы используете яваскрипт Canvas. сначала вы устанавливаете данные потока в метод drawImage холста, а затем загружаете его. как:

HTML

<canvas id="canvas"></canvas> 

Javascript

var canvas = document.getElementById('canvas'); 
var context = canvas.getContext('2d'); 
var img = new Image(); 

img.onload = function() { 
    context.drawImage(this, 0, 0, canvas.width, canvas.height); 
} 

img.src="data:image/gif;base64,R0lGODlhDwAPAKECAAAAzMzM/////wAAACwAAAAADwAPAAACIISPeQHsrZ5ModrLlN48CXF8m2iQ3YmmKqVlRtW4MLwWACH+H09wdGltaXplZCBieSBVbGVhZCBTbWFydFNhdmVyIQAAOw=="; 

var dataURL = context.toDataURL('image/png'); 

жаль! Я не получаю полный код, потому что сейчас занят. Думаю, ты так пользуешься.