我使用强大的解析函数时遇到问题。在我的项目中,我使用httpsys(不是内置的http模块)来创建服务器(用于端口共享),然后我发送一个带有多部分表单数据的帖子请求(包括字符串和zip文件)。然后我想使用formidable来解析请求体。但是不调用解析函数回调。没有错误。我不使用Express应用程序,但我使用Express Router来路由我的请求。我已经使用错误处理程序来捕获错误,但它永远不会被调用(form.on(' error',function(err){console.log(err);});)。有人有同样的问题吗?请提前帮助我。
// 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" );
});
}