0
這是我目前有:如何下載一個ZIP文件在所有瀏覽器
express.js
app.get('/downloadZip', function(req, res) {
var file = req.query.downloadURL;
var filename = path.basename(file);
var mimetype = 'application/zip';
res.setHeader('Content-disposition', 'attachment');
res.setHeader('Content-type', mimetype);
var filestream = fs.createReadStream(file);
filestream.pipe(res);
});
我控制器
$http({
method: "GET",
url: '/downloadZip',
params: {
downloadURL: 'myZip.zip'
},
responseType: 'arraybuffer'
}).then(
function success(data, status, headers, config) {
$log.debug('downloadZip success: ', data);
var blob = new Blob([data], {type: 'application/octet-stream'});
// using FileSaver.js
saveAs(blob, 'newZipName.zip');
},
function error(error) {
$log.debug('downloadZip error: ', error);
});
通過這種方法,它似乎找到文件確定 - $log.debug
輸出顯示一個5Mb的ArrayBuffer爲data
,這是正確的文件大小。但是,文件總是以1Kb的格式下載,顯然無法打開。
我想在上面的例子中使用FileSaver.js,但我也嘗試使用angular.element('<a/>')
等 - 它總是導致1Kb的下載。
有什麼我可以做的,以正確下載完整的ZIP?
編輯:
我想通了 - 見下面的回答。這些愚蠢的錯誤之一。但至少有一些很好的免費代碼以上誰想要下載郵政編碼;)
如果你能告訴我你是什麼網站是我可能會打破它。 '/ downloadZip?downloadURL = package.json' – Endless
@Endless有趣。你能建議一個更安全的方法嗎? – Locotes