我非常头疼将角度文件上传插件与multer结合起来使其完全SPA。我坚持通过multer上传多个文件。
这是我的multer选项的样子:( node route.js file)
var upload = multer({
storage: storage,
limits: {
//fileSize: 819200
}
}).array('myFile');
这是我的POST :( node 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;
}
});
它只添加第一个文件和卡住 - 我没有得到任何错误它只是卡住 - 整个页面工作,我可以再次发送文件,但再次只有第一个文件将被上传。控制台显示req.files
只有一个文件(第一个)
我在互联网上找不到任何教程或任何带有angular-file-upload插件的东西,这就是我问你们的原因
答案 0 :(得分: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...'})
}
});
});