Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 节点总线男孩&x2B;express 4+;ng文件上传不';t触发事件_Javascript_Node.js_Angularjs_Express - Fatal编程技术网

Javascript 节点总线男孩&x2B;express 4+;ng文件上传不';t触发事件

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

我使用的是mean.io stack+ng文件上传

有人知道为什么没有触发这些事件吗

客户

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);
});