javascript - Express.js 和 multer : how to know when the files are all uploaded?

标签 javascript express multer

我正在使用 Multer 模块进行文件上传。虽然一切正常,但在他们的 github 页面末尾有一条警告,内容如下: “警告:req.body 在文件上传完成后被完全解析。过早地访问 req.body 可能会导致错误。”

这让我非常担心。我只是找不到让 .post 中间件知道文件何时上传并且 req.body 可以使用的方法。这是我的代码:

应用程序.js:

app.use(multer({ 
        dest: './uploads/',
        rename: function (fieldname, filename) {
            return filename.replace(/\W+/g, '-').toLowerCase() + Date.now();
        },
        putSingleFilesInArray: true       
        })
);

上传.js:

router.route('/')
    .get(function(req, res){
        res.render('uploads');
    })
    .post(function(req, res){
        //how to wait here for the file to upload?
    });

虽然我知道 onParseEnd,但我不知道如何实现它,所以我至少有一些关于正在完成的上传过程的信息。

最佳答案

Multer 是路由器链的一部分。这意味着 express 将首先执行 multer,只有当 multer 完成对表单的解析后,它才会继续执行到您的 .post() 处理程序。页面上的警告用于从多个回调访问 req.body,例如 onFileUploadData() 等。因此,执行顺序为:

  • onParseStart
  • onFileUploadStart/onFileUploadData...
  • onFileUploadComplete
  • onParseEnd
  • 你的 .post() 处理程序

关于javascript - Express.js 和 multer : how to know when the files are all uploaded?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29452651/

相关文章:

node.js - 使用 express 服务 svg 文件

javascript - Node Js 实际上是异步的吗?

javascript - 函数内 JavaScript 变量的解释

javascript - Jquery AJAX执行失败 'setRequestHeader'

javascript - 如何将函数返回到作用域变量中?

javascript - 从前端传递数据以创建动态 multer 目标文件夹

javascript - 使用 multer Node.js 将文件下载到服务器时出错

javascript - 根据每个输入字段的值填充总计值

node.js - 如何修复expressjs REST API中的 "TypeError: Cannot read property ' body' of undefined'”

node.js - 我们可以将 multer 配置为不在本地存储文件并且仅用于使用 req.files.image.path 吗?