什么是bloburl及其用途?

我有非常多的问题bloburl。

我在YouTube上searchvideo标签的src ,我发现videosrc是这样的:

 src="blob:https://crap.crap" 

我打开了video的src中的bloburl,它给了一个错误,我无法打开,但与src标签工作。 这怎么可能?

要求:

  • 什么是bloburl?
  • 为什么使用?
  • 我可以在服务器上创build自己的Blob URL吗?
  • 如果你有任何额外的细节

提前致谢

Blob URL(参考W3C ,正式名称)或Object-URL(参考MDN和方法名称)与Blob或File对象一起使用。

src =“blob: https://crap.crap ”我打开了video的src中的blob url,它给了一个错误,我不能打开,但正在与src标签工作,如何可能?

Blob URL只能由浏览器在内部生成。 URL.createObjectURL()将创build一个对Blob或File对象的特殊引用,以后可以使用URL.revokeObjectURL()发布。 这些URL只能在浏览器的单个实例中以及在同一个会话中(即页面/文档的生命周期)在本地使用。

什么是Bloburl?
为什么使用?

Blob URL / Object URL是一个伪协议,允许Blob和File对象用作图像,下载二进制数据链接等URL源。

例如,你不能把一个Image对象的原始字节数据,因为它不知道如何处理它。 它需要例如图像(这是二进制数据)通过URL加载。 这适用于任何需要URL作为源的东西。 而不是上传二进制数据,然后通过URL提供回来,最好使用额外的本地步骤,以便能够直接访问数据,而无需通过服务器。

对于被编码为Base-64的string的Data-URI也是更好的select。 Data-URI的问题是每个char在JavaScript中占用两个字节。 最重要的是,由于Base-64编码,增加了33%。 Blob是纯粹的二进制字节数组,它不像Data-URI那样具有任何重要的开销,这使得它们处理速度越来越快。

我可以在服务器上创build自己的bloburl吗?

否,Bloburl/对象url只能在浏览器内部制作。 您可以通过文件读取器API创buildBlob并获取File对象,尽pipeBLOB只是意味着Binary Large对象,并以字节数组的forms存储。 客户端可以请求将数据作为ArrayBuffer或Blob发送。 服务器应该以纯二进制数据的forms发送数据。 数据库经常使用Blob来描述二进制对象,本质上我们基本上是谈论字节数组。

如果你有其他的细节

您需要将二进制数据封装为BLOB对象,然后使用URL.createObjectURL()为其生成本地URL:

 var blob = new Blob([arrayBufferWithPNG], {type: "image/png"}), url = URL.createObjectURL(blob), img = new Image(); img.onload = function() { URL.revokeObjectURL(this.src); // clean-up memory document.body.appendChild(this); // add image to DOM } img.src = url; // can now "stream" the bytes 

请注意, URL可能会在webkit浏览器中添加前缀,因此请使用:

 var url = (URL || webkitURL).createObjectURL(...); 

什么是Bloburl? 为什么使用?

BLOB只是字节序列。 浏览器将其识别为字节stream。 它用于从源获取字节stream。

Blob对象表示不可变的原始数据的类文件对象。 Blob表示不一定是JavaScript本地格式的数据。 File接口基于Blob,inheritanceblobfunction并将其扩展为支持用户系统上的文件。

我可以在服务器上创build自己的bloburl吗?

是的,你可以有多种方式来这样做例如尝试http://php.net/manual/en/function.ibase-blob-echo.php

阅读更多

Interesting Posts