Thursday 18 May 2017

formidable parse callback not be called and no error

I have problem when I use formidable parse function. In my project, I use httpsys (not build-in http module) to create server (for port sharing), and then I send a post request with multipart form data(including string and zip file). Then I want to use formidable to parse request body. But parse function callback does not be called. There is no error. I do not use Express application, but I use Express Router to route my requests. I already use error handler to catch error, but it never be called (form.on('error', function(err) { console.log(err); });). Anyone has same problem? Please help me out, thanks in advance.

   // main.js
    var router = express.Router();
    router.use(function (req, res, next) {
    for (var i in req.headers) {
        req.headers[i] = querystring.unescape(req.headers[i]);
        req.headers[i] = req.headers[i].replace(/\+/g, "");
    }
    next();
   });
   //router.use(bodyParser());
    router.post('/TestServer/' + 'TestRequest', function(req, res) {
    testRequestHandler.execute(req, res);
    });
   var server = require('httpsys').http().createServer(router);
   var port = '80'; // or other port
   var listeningPort = 'http://localhost:' + port + '/TestServer/';
   server.listen(listeningPort );

   // In testRequestHandler
    var execute = function(req, res) {
    var form = new Formidable.IncomingForm();
    form.uploadDir = uploadDir.getPath();
    form.encoding = Constants.ENCODING_UTF8;
    form.on('file', function(name, file) {console.log('file='+file);});
    form.on('error', function(err) { console.log(err); }); // never be called
    form.on('aborted', function() { console.log('Aborted'); });
    form.parse(req, function(err, fields, files) {
        //todo test code
        console.log( "parse finished" );
    });
 }



via leading00

No comments:

Post a Comment