私は大きなファイルを角からダウンロードする必要があります。リンクがあり、クライアントがクリックするとファイルをダウンロードする必要があります。コントローラーで コード:AngularJs、大きなファイルをダウンロード
$scope.download = function(id, type){
LogService.getLogFile(id, type) //service call endpoint of backend
.then(function (data) {
var file = new Blob([data], {type: 'application/csv;charset=utf-8'});
var fileURL = $window.URL.createObjectURL(file);
a.href = fileURL;
a.download = fileName;
a.click();
})
.catch(function (err) {
//error
});
}
それは小さなファイル(300MBの)のために動作しますが、大きなファイル(800MB)では動作しません。 4Gbまでファイルをダウンロードする必要があります。メインブラウザ(Chrome、Mozilla、Safari)で私はjimmywarting/StreamSaver.js で解決策(テストされていません)を見たので、ChromeとOperaのためだけです。私はバックエンドでノードのJsを使用
、コードは次のとおりです。
function getFile(req, res){
res.setHeader('Content-Type', 'application/octet-stream');
res.setHeader('Content-disposition', 'attachment');
var filePath = '....'; //PATH
var readStream = fs.createReadStream(filePath);
readStream.pipe(res);
})
.catch(function() {
res.sendStatus(400);
})
感謝。
「ブロブアドレスのWebページが見つかりません」というエラーが表示されます。ありがとう –
'window.location.href = data;' –
を試してくださいwindow.location.href = data;すべてのコードを置き換えますか? –