NodeJS express 3.0 bodyParser无法正常工作

x759pob2  于 2023-06-05  发布在  Node.js
关注(0)|答案(3)|浏览(213)

我用的是最新版的快递号。3.我已经阅读了文档,我完全按照写的做了,但它仍然没有像它应该的那样工作。提交后,我在上传目录中获得了一个文件,但随后一切都停止了,www.example.com的回调函数app.post也没有触发。代码:
HTML-JADE:

form(action="/upload", method="post", enctype="multipart/form-data")
  input(type="file", name="image")
  input(type='submit', value='submit')

App.js:

var express = require('express')
  , user = require('./routes/user')
  , http = require('http')
  , path = require('path')
  , mongo = require('mongodb')
  , Server = mongo.Server
  , Db = mongo.Db
  , routes = require('./routes')
    
var  app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser({uploadDir:'./upload'}));
  app.use(express.methodOverride());
  app.use(express.cookieParser('your secret here'));
  app.use(express.session());
  app.use(app.router);
  app.use(require('stylus').middleware(__dirname + '/public'));
  app.use(express.static(path.join(__dirname, 'public')));
});

app.post('/upload', function(req, res) {
  console.log(req.files.image) // this doesn't fire at all - no matter what i write here 
  res.send(200) //doesn't run also
});
rta7y2nd

rta7y2nd1#

阅读数据后需要返回响应。如果不返回响应,express就不知道响应何时完成,node也不会关闭与客户端的连接。
试试这个:

app.post('/upload', function(req, res) {
  console.log(req.files.image);

  req.on('data', function(raw) {
    console.log('received data');
  });

  req.on('end', function() {
    console.log('end');
    res.send(200);
  });
}
oymdgrw7

oymdgrw72#

尝试向用户发送一个简单的响应。

app.post('/upload', function(req, res) {
  console.log(req.files.image);
  res.write('File Uploaded !!');
  res.end();
}

更新

您应该尝试将格式更改为

app.post('/upload', function(err,req,res,next){
//Check for errors then handle it
}

不能告诉太多,直到我知道你得到了什么错误,因为文件正在上传到上传目录bodyParser工作正常。也许你的路由正在被另一个函数处理,或者根本没有处理。app.router是调用回调的代码。
当执行app.get('/upload', function(req, res) { ... });时,实际上是路由器调用回调函数来处理请求。你能确认你是否能成功地做app.get('/upload',...);的html-jade文件。如果没有,那么你的路线有问题。

6za6bjd0

6za6bjd03#

最后我找到了解决方案-那是因为我使用了node 0.9.6 -pre。在更改为0.8.21后,一切正常。
谢谢大家的帮助。

相关问题