在 Node.js 中从网络流创建 blob

编程入门 行业动态 更新时间:2024-09-25 18:18:47

在 Node.js 中从<a href=https://www.elefans.com/category/jswz/34/1771365.html style=网络流创建 blob"/>

在 Node.js 中从网络流创建 blob

我正在尝试通过

ipfs-car
(使用网络流)打包 CAR 文件,然后将其作为文件在请求中发送,但我不确定在流式传输后如何将其存储在
Blob
WritableStream

我有这段代码

import { CAREncoderStream, createDirectoryEncoderStream } from 'ipfs-car'
import { WritableStream } from 'node:stream/web'

export const packCAR = async (files) => {
  const blockStream = createDirectoryEncoderStream(files)
  const carEncoderStream = new CAREncoderStream([])
  const outStream = new WritableStream()
  await blockStream.pipeThrough(carEncoderStream).pipeTo(outStream)
  const blob = new Blob(/* what do I put here? */)
}

我还没有发现有人这样做,我只看到了如何将

Blob
转换为流,所以我们将不胜感激:)

回答如下:

将 WritableStream 的内容存储到 Blob 中。这可以通过将 WritableStream 转换为 ReadableStream,然后将其转换为 ArrayBuffer,最后将 ArrayBuffer 存储到 Blob 来完成。

import { CAREncoderStream, createDirectoryEncoderStream } from 'ipfs-car'
import { WritableStream, ReadableStream } from 'node:stream/web'

export const packCAR = async (files) => {
  const blockStream = createDirectoryEncoderStream(files)
  const carEncoderStream = new CAREncoderStream([])
  const chunks = []
  const outStream = new WritableStream({
    write(chunk) {
      chunks.push(chunk)
    },
    close() {
      console.log('Stream is closed.')
    }
  })
  await blockStream.pipeThrough(carEncoderStream).pipeTo(outStream)
  const arrayBuffer = await new Blob(chunks).arrayBuffer()
  const blob = new Blob([arrayBuffer])
  return blob
}

更多推荐

在 Node.js 中从网络流创建 blob

本文发布于:2024-06-16 03:25:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1771439.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:网络   Node   js   blob

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!