2016-10-31 30 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コントローラから[]バイトを取得するために、次のコードを持っています

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

私のgetFileメソッドから分かるように、データをblobに変換しますが、これをhtmlに送信することはできません。私はここに掲載された多数のソリューションを試しましたが、誰も働いていません。

上記のコードスニペットでは、ファイルはダウンロードできますが、Excelでは開くことができません。

私は角度がついていないので、どんな助けもあります。また、FileSaver.jsの使用を避けたいです。

私も次のように試しましたが、うまくいきません。

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

あなたはこの

答えて

0

あなたはgetFileメソッドの最初の行には、このようなものを試してみてください:

var fileName = "outputfile.pdf"; 
var a = document.createElement("a"); 

そして、あなたの成功に:

getFilePromise.success(function ($data) { 
    var file = new Blob([data], {type: 'application/pdf'}); 
    var fileURL = URL.createObjectURL(file); 
    a.href = fileURL; 
    a.download = fileName; 
    a.click(); 
} 
関連する問題