使用nodejs和connect-form上传文件
我已按照express multipart example上传将文件发送到服务器,并且工作正常。但是,如果我使用这样的路由中间件(coffeescript):
loadUser = (req, res, next) ->
if req.session.user_id?
db.user.findById req.session.user_id, (err, user) ->
if user?
req.currentUser = user
next()
else
next()
else
next()
app.post '/file',loadUser, (req, res) ->
req.form.complete (err, fields, files) ->
if (err)
console.error err
else
console.log '\nuploaded %s to %s', files.image.filename, files.image.path
req.form.on 'progress', (bytesReceived, bytesExpected) ->
percent = (bytesReceived / bytesExpected * 100) | 0;
process.stdout.write 'Uploading: %' + percent + '\r'
文件不会上传,并且没有任何日志,也没有错误。 然后我像这样清除 loadUser 中的代码:
loadUser = (req, res, next) ->
next()
它再次正常工作。 我的 loadUser 方法有问题吗?
I've followed the express multipart example to upload a file to server, and it works fine. But if I use a route middleware like this (coffeescript):
loadUser = (req, res, next) ->
if req.session.user_id?
db.user.findById req.session.user_id, (err, user) ->
if user?
req.currentUser = user
next()
else
next()
else
next()
app.post '/file',loadUser, (req, res) ->
req.form.complete (err, fields, files) ->
if (err)
console.error err
else
console.log '\nuploaded %s to %s', files.image.filename, files.image.path
req.form.on 'progress', (bytesReceived, bytesExpected) ->
percent = (bytesReceived / bytesExpected * 100) | 0;
process.stdout.write 'Uploading: %' + percent + '\r'
The file doesn't upload and there's nothing log and no error.
Then I clear the code in loadUser like this:
loadUser = (req, res, next) ->
next()
It works fine again.
Is there something wrong in my loadUser method?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
![扫码二维码加入Web技术交流群](/public/img/jiaqun_03.jpg)
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我发现了问题,因为当程序路由到“/file”时,form.complete已在loadUser中间件中发出。所以没有任何日志,也没有错误。
I've found the problem, because when the program route to the '/file', the form.complete had been emitted in the loadUser middleware. So there's nothing log and no error.