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