node.js - createReadStream 不采用 blob url?
问题描述
this.state.videoBlob
是一个 blob 对象。我使用 URL.createObjectURL 生成了一个 blob URL,并将其传递给 fs.createReadStream,如下所示:
fs.createReadStream(URL.createObjectURL(this.state.videoBlob))
这个 blob url 看起来像:
blobURL: blob:http://localhost:3000/dabe5cdd-00cc-408a-9f3d-b0ba5f2b10b3
但我收到一条错误消息:
TypeError: fs.createReadStream is not a function
如果我传递了一些在线视频 URL,问题将不存在。那么我怎样才能从中读取 blobfs.createReadStream
呢?谢谢!
解决方案
当我查看后面的代码时fs.createReadStream()
,它会调用 new ReadStream() 并将路径/url 传递给它。在这行代码中,似乎唯一受支持的 url 类型是文件 URL。该文档对该主题保持沉默,这就是我去看代码的原因。因此,在我看来,它不fs.createReadStream()
支持那种类型的伪 URL。
由于您只需要来自该 URL 的读取流,并且您拥有远程资源的实际 URL,因此我建议您只使用其中一个http.get()
或request()
类似的东西,因为它们都会联系远程主机并向您返回一个 readStream。由于您的目标是获得 readStream,因此这是实现该目标的一种方法。
http.get('http://localhost:3000/dabe5cdd-00cc-408a-9f3d-b0ba5f2b10b3', (res) => {
// res is a readstream here
}).on('error', (err) => {
// error on the request here
});
仅供参考,您可能会发现这个关于 Blob URL 的答案很有用。我没有看到任何fs.createReadStream()
支持 blob URL 的证据。在浏览器中,它们仅由浏览器内部创建,仅在特定网页上下文中有用(它们间接引用某些内部存储),不能在网页外部传递,甚至不能从一个网页保存页到下一页。如果您希望您的服务器能够从浏览器中创建的 blob URL 访问实际数据,则必须将实际数据上传到您的服务器。您的服务器无法访问在浏览器中创建的 blob URL。
推荐阅读
- typescript - 在打字稿中创建一个界面,其中只允许两个属性之一?
- python - CNN 仅针对 binary_crossentropy 损失函数收敛并且在测试数据集上失败
- android - ViewModelProviders 已经过时了,应该换什么?
- php - 如何在不使用 API 的情况下生成 Trx 钱包
- django - 为 Django 查询集组合过滤器
- javascript - 如何将数量增加一并跟踪单击的项目?
- python - Python Tkinter - 小部件出错 - TclError:预期整数但得到“新”
- c - 未知错误函数'scanf("%[^\n]%*c", &sent);'
- html - 如果添加相对定位的元素,如何阻止 flexbox 容器增长?
- r - 具有colmeans条件的R样本数据框