📜  nodejs 保存 blob 文件 - Javascript (1)

📅  最后修改于: 2023-12-03 15:17:57.955000             🧑  作者: Mango

Node.js 保存 Blob 文件

在Web开发中,我们经常需要处理二进制数据。其中一种形式是 Blob, 代表了不可变、原始数据、可以是文本或二进制数据的类文件对象。在 Node.js 中,我们可以使用fs模块将 Blob 写入文件系统中。

创建 Blob 对象

在开始之前,我们需要创建一个支持 Blob 的浏览器环境以模拟该过程。以下是一个用于创建 Blob 对象的示例:

const someData = 'Hello, world!';
const blob = new Blob([someData], { type: 'text/plain'});

这样,我们就创建了一个包含字符串“Hello, world!”的blob对象,并将其类型设置为text/plain

写入 Blob 文件

下面是一个将 Blob 写入文件系统的示例代码:

const fs = require('fs');

function saveBlobToFileSystem(blob, fileName) {
  const stream = fs.createWriteStream(fileName);
  stream.write(Buffer.from(await blob.arrayBuffer()));
  stream.end();
}

saveBlobToFileSystem(blob, 'my-file.txt');

该函数创建一个可写流(WriteStream),并使用 stream.write() 将 Blob 数据写入文件系统。注意,这里我们需要使用 Buffer 对象来将数据从 Blob 中转换为类文件的表示。最后使用 stream.end() 来完成写入过程。

异步版本

如果您使用的是异步 API,下面是一个类似的实现:

const fs = require('fs').promises;

async function saveBlobToFileSystem(blob, fileName) {
  await fs.writeFile(fileName, Buffer.from(await blob.arrayBuffer()));
}

saveBlobToFileSystem(blob, 'my-file.txt');

这个版本使用了fs.promises 进行异步写入文件系统操作。这是Node.js 10引入的新特性。

结论

在这篇文章中,我们介绍了如何将 Blob 写入文件系统中,同时提供了两个版本的代码用于同步和异步的文件写入。无论您在 Web 发展中需要处理什么样的二进制数据,都可以使用类似的模式将其写入文件系统中。

参考