Я использую MEAN, в котором я хочу разрешить пользователю загружать zip-файл с сервера. Так что в основном я должен делать следующее:скачать .zip файл с сервера в nodejs
- Создайте csv-файлы из определенных данных.
- Сохраните этот файл в каком-либо каталоге.
- Сжатие этих файлов в zip.
- Когда пользователь нажимает на кнопку, zip-файл должен быть загружен и доступен для чтения.
Я достиг 1,2,3 полностью и 4 частично. В этом я смог успешно скачать zip-файл, но этот файл находится в поврежденном формате, и я не могу прочитать этот файл.
Мой код для функциональности скачать здесь:
HTML: Скачать CSV Отчеты
угловая часть:
$scope.downloadFiles = function() {
$http({
method: 'GET',
url: '/download/csv/files'
}).
success(function(data, status, headers, config) {
var anchor = angular.element('<a/>');
anchor.attr({
href: 'data:attachment' + encodeURI(data),
target: '_blank',
download: 'filename.zip'
})[0].click();
}).
error(function(data, status, headers, config) {
alertify.error(data);
});
};
NodeJS:
var path = require('path'),
fs = require('fs');
exports.downaloadAllCsv = function(req, res) {
var file = 'local path to my zip file',
filename = path.basename(file);
res.setHeader('Content-disposition', 'attachment; filename=' + filename);
res.setHeader('Content-type:',' application/zip');
var filestream = fs.createReadStream(file);
filestream.pipe(res);
};