【问题标题】:Node.js (sails.js) Find total number of files sent in a file uploadNode.js (sails.js) 查找文件上传中发送的文件总数
【发布时间】:2014-10-06 18:25:44
【问题描述】:

我在sails.js 应用程序中有一个文件上传系统。我想在将上传文件保存到服务器之前对其进行处理。我在客户端的表单允许上传多个文件。现在在服务器端我怎么知道发送了多少文件?

例如,我可以使用以下方法找到预期上传的总字节数:

req._fileparser.form.bytesExpected

但是,我找不到类似的东西来帮助我找到发送到服务器的文件总数。

还有上面的代码req._fileparser.form.bytesExpected,有没有更好的方法来获取客户端通过上传表单发送的文件的总组合文件大小?

【问题讨论】:

    标签: node.js express sails.js skipper


    【解决方案1】:

    在 Skipper 的 github 存储库中有一个文件:index.js

    上述文件的第 92 行似乎处理分段文件上传,包含以下内容:

    var hasUpstreams = req._fileparser && req._fileparser.upstreams.length;

    您应该检查代码中上游的长度,并查看其中是否包含您发送的文件数。

    另一种选择:在您的请求中从客户端发送一个参数,其中包含上传的文件数。

    请参阅关于 Text Parameters 的船长自述文件部分。

    Skipper 允许您访问其他非文件元数据参数(例如“photoCaption”或
    “commentId”)以传统方式。这包括 url/JSON 编码的 HTTP 正文参数 (req.body)、查询字符串参数 (req.query) 或“路由”参数 (req.params);换句话说, 在标准 AJAX 上传或 HTML 表单提交中发送的所有标准内容。和辅助方法 比如 req.param() 和 req.allParams() 也可以。

    我刚刚在 stackoverflow 上找到了以前的 question/answer

    您可以尝试使用var upload = req.file('file')._files[0].stream 进行访问和验证,如上述答案所示。

    【讨论】:

    • 我正在寻找与您的第一个选项类似的东西。但是upstreams.length 并没有给我正确数量的要上传的文件。顺便说一句,如果你对我想要它的目的感到好奇。我想动态设置最大文件大小。例如,如果我允许每个文件 10 mb,并且用户一次上传多个文件,则 10 mb 可能不够。这也是我不能相信客户端作为参数发送的数字的原因。
    • 感谢 stackoverflow 链接。这是很好的帮助。但我仍然无法获得收到的文件总数。 headers 值仅显示有关其中一个文件的信息。
    猜你喜欢
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 2021-07-02
    • 2015-02-20
    • 1970-01-01
    • 2011-07-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多