Busboy不会解雇“现场”事件

时间:2015-01-27 08:51:16

标签: angularjs node.js xmlhttprequest busboy

我得到了formData的文件事件,但是busboy没有触发其他字段事件。有人可以看看吗?我使用的是最新版本的node和busboy。 formData通过xmlhttprequest发布。我想添加一些其他字段而不仅仅是文件。

busboy的:

var Busboy = require('busboy'),
    path = require('path'),
    Connection = require('ssh2'),
    fs = require('fs');

module.exports = {
    uploadFile: function(req,res) {

        var conn = new Connection();
        conn.on('ready', function() {
            console.log('Connection :: ready');
            conn.sftp(function(err, sftp) {
                var busboy = new Busboy({ headers: req.headers });
                req.pipe(busboy);

                busboy.on('file', function(fieldname, file, filename, encoding, mimetype) {
                    //works fine
                });
                busboy.on('ident', function(fieldname, val) {
                    // doesn't get called
                });
                busboy.on('finish', function() {
                    res.status(200).end();
                    console.log('Done parsing form!');
                });

            });
        }).connect({
            //options
        });

        conn.on('error', function (err) {
            console.log( "- connection error: %s", err );
            process.exit( 1 );
        });


    }
}

Formdata:

        var file = $scope.files[0];
        var fd = new FormData();
        fd.append('file', file);
        fd.append('ident', $routeParams.id);
        if (file.type!="application/pdf"){
            mvNotifier.error("Nur PDF Dateien sind akzeptiert.");
            return true;
        }       
        var xmlhttp;
        if (window.XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
        }
        else
        {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }
        xmlhttp.open('POST', '/api/upload/file', true);
        xmlhttp.onload = function(response) {
             //gets called
        }
        xmlhttp.send(fd);

1 个答案:

答案 0 :(得分:0)

不是

busboy.on('ident', function(fieldname, val) {}));

你必须尝试:

busboy.on('field', function(fieldname, val) {
             /*get all non-file field here*/ });