【问题标题】:How to create a blob in node (server side) from a stream, a file or a base64 string?如何从流、文件或 base64 字符串在节点(服务器端)中创建 blob?
【发布时间】:2018-06-06 06:11:27
【问题描述】:

我正在尝试从我从 pdfmake 创建的 pdf 创建一个 blob,以便我可以将它发送到仅处理 blob 的远程 api。

这就是我获取 PDF 文件的方式:

var docDefinition = { content: 'This is an sample PDF printed with pdfMake' };
pdfDoc.pipe(fs.createWriteStream('./pdfs/test.pdf'));   
pdfDoc.end();

以上代码行确实生成了可读的 pdf。

现在我怎样才能从那里得到一个 blob?我尝试了很多选项(使用 blob-stream 模块从流创建 blob,使用 fs 从文件创建,使用 b64toBlob 从 base64 字符串创建它)但所有这些都需要在某些时候使用构造函数 Blob即使我需要模块 blob,我总是会收到错误:

TypeError: Blob is not a constructor

经过一番研究,我发现 Blob 构造函数似乎只支持客户端。

我发现并且似乎处理这个问题的所有 npm 包似乎只在客户端工作:blob-stream、blob、blob-util、b64toBlob 等。

那么,如何在 Node 上创建 blob 服务器端?

我不明白为什么几乎没有人也需要创建 blob 服务器端?我能找到的关于这个主题的唯一线程是this one

根据那个帖子,显然:

解决这个问题的方法是创建一个可以在 Array Buffers 和 Node Buffers 之间转换的函数。 :)

不幸的是,这对我没有多大帮助,因为我显然似乎缺乏一些重要的知识来理解这一点。

【问题讨论】:

  • 一般来说:Blob 是一个描述二进制对象的抽象概念,如果你愿意的话,它是一个本地包装器。您不能真正发送“blob”,因为它在访问网络时基本上只是一个二进制/字节流(这就是为什么您实际上不需要服务器上的 Blob)。只需将数据作为二进制流从服务器发送 - 客户端应该能够以 ArrayBuffer 的形式接收(通过 XMLHttpRequest 或 fetch)或将后者转换为 Blob。
  • 不是构造函数,但消息来源说它应该可以工作。 npmjs.com/package/blob

标签: node.js server blob


【解决方案1】:

使用node-blobnpm 包

const Blob = require('node-blob');

let myBlob = new Blob(["something"], { type: 'text/plain' });

【讨论】:

    猜你喜欢
    • 2019-01-13
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 2015-07-07
    • 2017-01-06
    • 1970-01-01
    相关资源
    最近更新 更多