使用nodejs和connect-form上传文件

发布于 2024-12-08 17:13:09 字数 1088 浏览 0 评论 0原文

我已按照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技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅浅 2024-12-15 17:13:09

我发现了问题,因为当程序路由到“/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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文