我正在尝试编写一个返回
Blob
或 File
对象 blob_object
的函数,同时获取对象 tmpFilePath
的本地文件路径,并且我必须使用 NodeJS 来完成此操作函数用作 Firebase 云函数的一部分。我尝试了很多方法,但没有一个有效。他们主要围绕这个。
尝试 1:使用
streamToBlob
。灵感来自reddit
const streamToBlob = require('stream-to-blob');
const fs = require('fs-extra');
const input_read_stream = fs.createReadStream(tmpFilePath);
const blob_object = await streamToBlob(input_read_stream);
错误:
ReferenceError: Blob is not defined
尝试 2:使用
blob
。灵感来自stackoverflow
const Blob = require('blob');
const fs = require('fs-extra');
const file_buffer = fs.readFileSync(tmpFilePath);
const blob_object = new Blob([file_buffer]);
错误:
TypeError: Blob is not a constructor
。
一个可行的解决方案意味着在我的文件
file.js
中编写代码后,我将能够运行node file.js
并console.log一个Blob
或File
对象。有谁知道如何通过一系列步骤来完成此操作?我在节点 8。
在撰写本文时,
Blob
支持仍处于实验阶段,但这应该适用于最新版本的 Node.js:
import fs from "fs";
import { Blob } from "buffer";
let buffer = fs.readFileSync("./your_file_name");
let blob = new Blob([buffer]);
因此,如果您将 Node 升级到 v16,您的第二个示例应该可以工作。
Node 19.8 为此提供了一个新的 API:fs.openAsBlob(path, options)
参见https://github.com/nodejs/node/issues/45188#issuecomment-1475017344