我已关注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 方法有问题吗?
最佳答案
我发现了这个问题,因为当程序路由到'/file'时,form.complete已经在loadUser中间件中发出了。所以没有任何日志,也没有错误。
关于forms - 使用nodejs和connect-form上传文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7698163/