Сочетание угловых файлов и загрузки
У меня большая головная боль, чтобы объединить плагин угловой загрузки файла с multer, чтобы сделать его полностью SPA. Я застрял на загрузке нескольких файлов через Multer.
Вот так выглядят мои параметры мультитера: (файл node route.js)
var upload = multer({
storage: storage,
limits: {
//fileSize: 819200
}
}).array('myFile');
это мой POST: (файл узла route.js)
router.post('/add/file', function(req, res, next) {
upload(req,res,function(err) {
console.log(req.files);
if(err) {
console.log("Error uploading file.");
}
});
});
это внутри моего углового контроллера:
var uploader = $scope.uploader = new FileUploader({
url: 'http://localhost:3000/add/file',
alias: 'myFile'
});
uploader.filters.push({
name: 'imageFilter',
fn: function(item /*{File|FileLikeObject}*/, options) {
var type = '|' + item.type.slice(item.type.lastIndexOf('/') + 1) + '|';
return '|jpg|png|jpeg|bmp|gif|'.indexOf(type) !== -1;
}
});
Он добавляет только 1-й файл и залипает - я не получаю никакой ошибки, он просто залипает - вся страница работает, и я могу снова отправлять файлы, но снова будет загружен только 1-й файл. Консоль показывает, что req.files
есть только 1 файл (тот первый)
Я не смог найти учебник или что-нибудь в Интернете с плагином angular-file-upload, поэтому я прошу вас, ребята
1 ответ
Не уверен, что вы уже поняли это или нет, но при отправке нескольких файлов функция uploadAll не будет отправлять следующий файл, пока не получит ответ от сервера. Так что маршрут должен выглядеть следующим образом. Я также видел где-то в документации, что ответ должен быть json... не проверял, правда ли это, хотя
router.post('/add/file', function(req, res, next) {
upload(req,res,function(err) {
console.log(req.files);
if(err) {
console.log("Error uploading file.");
} else {
res.status(200).json({response: 'some response...'})
}
});
});