【问题标题】:Node.js upload file into Buffer instead of /tmpNode.js 将文件上传到 Buffer 而不是 /tmp
【发布时间】:2015-12-22 23:39:01
【问题描述】:

在 Node.js 应用程序中,是否可以将文件 (multipart/form-data) 直接上传到服务器上的缓冲区,而不是将文件保存到文件系统?

在伪代码中,您通常使用文件上传表单来执行此操作

router.post('/upload', function(req, res, next){
  // file is saved to /tmp/dk3idkalel4kidkek
  // do some processing on the file
  // manually save file to /www/myapp/uploads/originafilename.ext
});

是否可以跳过关于将文件保存到/tmp 的部分,而只是将上传的文件捕获为缓冲区并将其直接流式传输到目标目录?

例如,上传一张图片,然后优化图片,然后将其保存到预期的目的地。您可以只捕获传入的流,对其进行优化然后保存,而无需初始保存到/tmp 目录吗?

【问题讨论】:

  • 您研究过 Express Multer 吗?它有一个 MemoryStorage 选项,可以满足您的需求。
  • 我有我没有意识到它有。谢谢
  • 太好了,如果这对您有帮助,请标记已回答并点赞。谢谢。

标签: node.js file-upload


【解决方案1】:

Multer 是一个用于处理 multipart/form-data 的 node.js 中间件,主要用于上传文件。内存存储引擎将文件作为 Buffer 对象存储在内存中。使用内存存储时,文件信息将包含一个名为缓冲区的字段,该字段包含整个文件。

这应该完全符合您的需要。

您可以阅读更多here

【讨论】:

  • 谢谢,但我有点担心如果最终用户尝试过快上传太多大文件会达到内存限制的警告。也许我需要坚持使用本地文件存储。
【解决方案2】:

Multer 模块使用 busboy 进行上传,因此另一种方法是使用 busboy 进行快递:connect-busboy

【讨论】:

    猜你喜欢
    • 2012-03-05
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2017-12-03
    • 2021-03-18
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    相关资源
    最近更新 更多