Ich muss eine große Datei von eckigen herunterladen. Ich habe einen Link und wenn der Client klickt, muss die Datei heruntergeladen werden. -Code in Controller:AngularJs, große Dateien herunterladen
$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
});
}
Es ist für kleine Dateien arbeitet (300Mb), aber mit großen Dateien (800MB) funktioniert nicht. Ich müsste Dateien bis 4 GB herunterladen. Und mit dem Hauptbrowser (Chrome, Mozilla und Safari). Weil ich in jimmywarting/StreamSaver.js eine Lösung gesehen habe (Nicht getestet) aber nur für Chrome und Opera.
I Knoten Js verwenden im Backend, ist der Code:
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);
})
Dank.
Nicht funktioniert, Fehler "Keine Webpage für BLOB-Adresse gefunden". Danke –
try 'window.location.href = data;' –
window.location.href = data; den ganzen Code ersetzen? –