在 Node.js 里使用 multiparty 上传文件

举报
汪子熙 发表于 2023/02/19 12:46:27 2023/02/19
【摘要】 需求将上传的文件直接保存到 Google Cloud Storage 中。解决方法:我们需要使用 part stream 订阅标准流事件,例如 data 和 end 以接收文件数据。示例代码如下:part.on("data", chunk => { writeStream.write(chunk);});part.on("end", chunk => { writeStream...

需求

将上传的文件直接保存到 Google Cloud Storage 中。

解决方法:我们需要使用 part stream 订阅标准流事件,例如 data 和 end 以接收文件数据。

示例代码如下:

part.on("data", chunk => {
    writeStream.write(chunk);
});

part.on("end", chunk => {
    writeStream.end(chunk);
});

writeStream - 是要放置数据的另一个流。 在我的例子中,这是通过 signedUrl 发出的 Google Cloud Storage 文件 PUT 请求。 part - 是表单部件事件的部件对象。

流是支持 Node.js 应用程序的基本概念之一。 它们是数据处理方法,用于按顺序读取输入或将输入写入输出。

流是一种以高效方式处理读/写文件、网络通信或任何类型的端到端信息交换的方式。

流的独特之处在于,它不是像传统方式那样由程序一次将文件全部读入内存,而是逐条读取数据块,处理其内容而不将其全部保存在内存中。

这使得流在处理大量数据时非常强大,例如,文件大小可能大于您的可用内存空间,因此无法将整个文件读入内存以进行处理。 这就是流来救援的地方!

使用流处理较小的数据块,可以读取较大的文件。

让我们以 YouTube 或 Netflix 等“流媒体”服务为例:这些服务不会让您同时下载视频和音频。 相反,您的浏览器接收视频作为连续的块流,允许接收者几乎立即开始观看和/或收听。

然而,流不仅仅是处理媒体或大数据。 它们还赋予我们代码“可组合性”的力量。 考虑到可组合性进行设计意味着可以以某种方式组合多个组件以产生相同类型的结果。 在 Node.js 中,可以使用流通过管道将数据传入和传出其他较小的代码片段,从而组合出功能强大的代码片段。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。