2016-10-31 133 views
1

我試圖下載一個文件,以便用戶可以選擇打開或保存。他們單擊文件名:使用angularjs下載文件

<a href data-ng-click="getFile(file.id)"> 
        {{file.name}}</span> 
       </a> 

那麼這個調用的角度JS文件

$scope.getFile= function ($id) { 
    var getInputFilePromise = fileFactory.getInputFile($id); 
    getFilePromise.success(function ($data) { 
     var blob = new Blob([$data], {type: 'text/csv'}); 
     //code to allow downloading file 
}); 
} 

工廠擁有下面的代碼獲取從Java控制器的byte []的方法:

getFile: function ($id) { 
     return $http.get('/downloadFile?id=' + $id, {responseType:'arraybuffer'}); 
    } 

正如你可以從我的getFile方法看到的,我將數據轉換爲blob,但我無法將其發送到html。我已經嘗試過在這裏發佈的衆多解決方案,但都沒有工作。

var blob = new Blob([$data], {type: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}); 
     var objectUrl = URL.createObjectURL(blob); 
     window.open(objectUrl); 

上述代碼片段允許下載文件,但Excel無法打開它。

任何幫助將是偉大的,因爲我是新的角。我也想避免使用FileSaver.js

我也試過以下,但它不起作用。

var hiddenElement = document.createElement('a'); 
      hiddenElement.href = 'data:attachment/csv,' + encodeURI($data); 
      hiddenElement.target = '_blank'; 
      hiddenElement.download = fileName; 
      hiddenElement.click(); 
+1

您可以使用此的

回答