Javascript 节点总线男孩&x2B;express 4+;ng文件上传不';t触发事件
我使用的是mean.io stack+ng文件上传 有人知道为什么没有触发这些事件吗 客户Javascript 节点总线男孩&x2B;express 4+;ng文件上传不';t触发事件,javascript,node.js,angularjs,express,Javascript,Node.js,Angularjs,Express,我使用的是mean.io stack+ng文件上传 有人知道为什么没有触发这些事件吗 客户 controller('ArticleParentCtrl', ['$scope', '$timeout', '$upload', function ($scope, $timeout, $upload) { $scope.article = {}; function setPreview(fileReader, index) { fileRea
controller('ArticleParentCtrl', ['$scope', '$timeout', '$upload', function ($scope, $timeout, $upload) {
$scope.article = {};
function setPreview(fileReader, index) {
fileReader.onload = function(e) {
$timeout(function() {
$scope.dataUrls[index] = e.target.result;
});
};
}
$scope.fileReaderSupported = window.FileReader !== null;
$scope.uploadRightAway = true;
$scope.hasUploader = function(index) {
return (typeof $scope.upload[index] !== 'undefined');
};
$scope.abort = function(index) {
$scope.upload[index].abort();
$scope.upload[index] = null;
};
$scope.onFileSelect = function($files) {
$scope.selectedFiles = [];
$scope.progress = [];
if ($scope.upload && $scope.upload.length > 0) {
for (var i = 0; i < $scope.upload.length; i++) {
if ($scope.upload[i] !== null) {
$scope.upload[i].abort();
}
}
}
$scope.upload = [];
$scope.uploadResult = [];
$scope.selectedFiles = $files;
$scope.dataUrls = [];
for (var y = 0; y < $files.length; y++) {
var $file = $files[y];
var isImage = /\.(jpeg|jpg|gif|png)$/i.test($file.name);
if(!isImage){
alert('Only images are allowed');
return;
}
if (window.FileReader && $file.type.indexOf('image') > -1) {
var fileReader = new FileReader();
fileReader.readAsDataURL($files[y]);
setPreview(fileReader, y);
}
$scope.progress[y] = -1;
if ($scope.uploadRightAway) {
$scope.start(y);
}
}
};
$scope.start = function(index) {
$scope.progress[index] = 0;
$scope.upload[index] = $upload.upload({
url :'/articles/api/upload',
method: 'POST',
headers: {
'x-ng-file-upload': 'lalista'
},
data : $scope.media,
file: $scope.selectedFiles[index],
fileFormDataName: 'avatar'
})
.then(
function(response) {
$scope.uploadResult.push(response.data);
$timeout(function() {
$scope.article.avatar = response.data.avatar;
});
},
null,
function(evt) {
$scope.progress[index] = parseInt(100.0 * evt.loaded / evt.total);
})
.xhr(function(xhr){
xhr.upload.addEventListener('abort', function(){
console.log('aborted complete');
},
false);
});
};
}])
如果我使用如下命令:
var form = new formidable.IncomingForm;
form.parse(req, function(err, fields, files){
console.log(files);
});
代码运行良好
但是我想知道,到底是什么让男服务员不起作用:(你没有把你的请求传送到男服务员身上。你需要做
请求管道(男服务员);
这对我很有效
var-Busboy=require('Busboy');
exports.upload=函数(请求、恢复){
var busboy=新的busboy({
标题:req.headers
});
busboy.on('error',函数(err){
控制台日志(err);
});
on('file',函数(字段名、文件、文件名、编码、mimetype){
console.log(字段名);
console.log(文件);
log(文件名);
console.log(编码);
console.log(mimetype);
//见其他问题
resume();
});
busboy.on('finish',function(){
console.log('finish');
});
返回要求管道(公共汽车司机);
};
我已经试过了,但是如果我没有弄错的话,我得到了一个未定义的busboy.on请求管道(busboy)这是为connect-busboy设置的问题中的busboy示例是直接使用busboy。如果您实际上没有使用该代码,而是使用connect-busboy,那么您需要在req.busboy
上附加事件处理程序,并使用req.pipe(req.busboy);
如果您没有在connect-busboy中间件设置中设置immediate:true
。我已经尝试了这两种设置,但是第一个损坏的bodyParser()我把它放在了一个位置,顺便问一下,您可以同时使用这两个bodyParser()吗应用程序配置中的busboy和busboy?第二个问题在帖子中给我这个要点中关于connect busboy的配置应该可以正常工作。在路由处理程序中,您只需执行req.busboy.on('file',…);
和req.busboy.on('field',…);
以及之后的操作:req.pipe(req.busboy)
。如果不起作用,请提供一个失败的简单示例,我将尝试复制它。此外,如果您使用的是busboy,则不需要正文解析器。gist示例bodyparser()的问题已解决。如果您想复制它,请使用我使用的post code btw。再次感谢:)
var form = new formidable.IncomingForm;
form.parse(req, function(err, fields, files){
console.log(files);
});