Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js createReadStream不';不接受blob url?_Node.js_Blob - Fatal编程技术网

Node.js createReadStream不';不接受blob url?

Node.js createReadStream不';不接受blob url?,node.js,blob,Node.js,Blob,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 但我有

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不是函数


如果我传递一些在线视频URL,这个问题就不存在了。那么如何从
fs.createReadStream
读取blob呢?谢谢

当我查看
fs.createReadStream()
后面的代码时,它调用new ReadStream(),并将路径/url传递给它。在上,似乎支持的唯一url类型是文件url。医生没有提到这个话题,这就是为什么我去看代码的原因。因此,在我看来,
fs.createReadStream()
不支持这种类型的伪URL

由于您只需要该URL中的readstream,并且您拥有远程资源的实际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
});

仅供参考,您可能会发现这很有用。我没有看到任何证据表明
fs.createReadStream()
支持blob URL。在浏览器中,它们是仅由浏览器内部创建的东西,仅在特定网页上下文中有用(它们间接指一些内部存储),不能传递到网页外部,甚至不能从一个网页保存到下一个网页。如果您希望服务器能够从浏览器中创建的blobURL访问实际数据,则必须将实际数据上载到服务器。您的服务器无法访问在浏览器中创建的blob URL。

当我查看
fs.readStream()
后面的代码时,它调用
new readStream()
,并将路径/URL传递给该浏览器。在上,似乎支持的唯一url类型是文件url。该文档对该主题保持沉默,这就是我去查看代码的原因。我不理解像这样的URL的意义:
blob:http://localhost:3000/dabe5cdd-00cc-408a-9f3d-b0ba5f2b10b3
所以我不知道该怎么处理它。如果它是一个远程资源,那么您可以只使用
http.get()
request()
在实际URL上,您将从中获得一个readStream。
blob:http://localhost:3000/dabe5cdd-00cc-408a-9f3d-b0ba5f2b10b3
是我在我的browser@damingzi-这能为你解释吗?谢谢@jfriend00。它解释了为什么fs.createReadStream()不适用于浏览器生成的blob。