将大文件上传到NodeJS webserver

jim*_*ssy 7 node.js express multer

我目前正在使用NodeJS服务器(ExpressJS)提供我的Web应用程序.新要求之一是用户能够将大型视频(可能是演出)上传到服务器.他们稍后可以再次下载它们.我能用当前的堆栈实现这个目标吗?

我使用Multer JS和前端指定的"multipart/form-data" 来学习教程.如果我使用它,我的Express能够在将巨大的单个视频文件写入服务器磁盘时提供其他HTTP请求吗?

maj*_*ann 5

我自己完成了这个(~20GB 文件,没有 multer)我可以推荐以下内容(可能你已经考虑过其中的大部分,但为了完整性):

  1. 选择合适的上传控件(或编写自己的控件,但基本上可以将数据分块的内容最好。我认为我使用了 plupload)

  2. 在服务器上创建一个 API 来处理接收到的块数据,并在上传期间将其写出到临时位置(您可能还想散列和检查单个片段)。

  3. 上传完成后,检查文件(我使用了客户端生成的哈希值,并根据上传的数据进行了检查)

  • 我在 4 / 5 年前就做过了……不认为这个项目甚至存在(当我做的时候,我们还在用 Flash 做很多 HTML5 填充:O) (2认同)

Ran*_*ndy 4

穆特应该工作得很好。它将通过 HTTP 传入的数据流式传输到磁盘上的文件。它不会锁定您的服务器。然后,在您的端点中,您可以访问该文件位置,并可以使用它执行您需要的任何操作。

  • 我正在使用 multer,但它总是首先将文件加载到内存中。不将数据流式传输到磁盘,有什么想法吗? (5认同)
  • 旁注:您只是将该文件上传到 S3 吗?如果是的话,您实际上可以让客户端将文件直接上传到 S3。这将使您的节点服务器不必处理 GB 的数据。而且 S3 可能可以比您自己的服务器更快地将您的文件返回给任何人。 (3认同)