使用connect-form上传文件

时间:2012-01-10 04:46:58

标签: javascript node.js upload express

我尝试使用connect-form上传文件,但如果我要上传,则必须在bodyParser()中停用app.js,如果我保留bodyParser()则会出错:{ {1}}
这是我的loading forever

app.js

这是我调用 app.configure(function(){ app.set('views', __dirname + '/views'); app.set('view engine', 'jade'); app.set('view option', { layout: false }); // app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(require('stylus').middleware({ src: __dirname + '/public' })); app.use(express.static(__dirname + '/public')); app.use(express.cookieParser()); app.use(express.session({secret: 'secrect', store: MemStore({ reapInterval: 60000 * 10 })})); app.use(app.router); });

的代码
upload file

那么,当我调用上传文件时,如何禁用app.post('/album/upload', function( req, res) { req.form.complete(function(err, fields, files) { if (err) { next(err); console.log('error upload') } else { console.log(fields); console.log('---------------'); console.log(files); res.send('upload successfull'); } }); }); ,或者无论如何帮助我上传文件都不会出错。

1 个答案:

答案 0 :(得分:1)

两件事:

  • Express基于连接。
  • bodyParser基于强大的,而连接形式基于强大的。

拥有bodyParser和connect-form就像解析请求的主体两次,但第二次,网络流是空的,将无法解析任何东西,永远等待输入。

当发布connect 2.0时,此问题已经出现,具有处理多部分请求的扩展功能,使连接形式过时。

文件应该只使用bodyParser上传,并存储在 req.files

看看: https://github.com/senchalabs/connect/blob/master/lib/middleware/multipart.js(这是express在遇到多部分请求时对bodyParser所做的事情。)