2023年8月1日发(作者:)

什么是BLOBURL,为什么要使⽤它?在百家号上,发现视频src如下所⽰:是可以播放和打开,很神奇,我就去查了⼀下这块。那么问题来了什么是blob⽹址?为什么使⽤它?我可以在服务器上创建⾃⼰的Blob URL吗?如果你有任何额外的细节Blob URL(参考W3C,官⽅名称)或Object-URL(参考MDN和⽅法名称)与Blob或File对象⼀起使⽤。src =“blob:https:// ”我打开了视频src中的blob url,它给出了⼀个错误,我⽆法打开,但与src标签⼀起⼯作,它有多可能?Blob URL只能由浏览器在内部⽣成。ObjectURL()将创建⼀个特殊的Blob或File对象的引⽤,以后可以使⽤它来发布ObjectURL()。这些URL只能在浏览器的单个实例中和同⼀个会话中(即页⾯/⽂档的⽣命周期)在本地使⽤。什么是Blob⽹址? 为什么使⽤它?Blob URL / Object URL是⼀种伪协议,允许Blob和File对象⽤作图像,下载⼆进制数据链接等的URL源。例如,不能处理Image对象的原始字节数据,因为它不知道如何处理它。它需要例如图像(⼆进制数据)通过URL加载。这适⽤于任何需要URL作为源的东西。不⽤上传⼆进制数据,⽽是通过URL提供回来,最好使⽤额外的本地步骤来直接访问数据⽽⽆需通过服务器。对于编码为Base-64的字符串的Data-URI也是更好的选择。Data-URI的问题是每个char在JavaScript中占⽤两个字节。最重要的是,由于Base-64编码增加了33%。Blob是纯粹的⼆进制字节数组,它不像Data-URI那样具有任何重要的开销,这使得它们处理速度越来越快。我可以在服务器上创建⾃⼰的Blob⽹址吗?否,Blob⽹址/对象⽹址只能在浏览器内部制作。可以通过⽂件读取器API创建Blob并获取File对象,尽管BLOB只是意味着Binary Large对象并以字节数组的形式存储。客户端可以请求数据以ArrayBuffer或Blob的形式发送。服务器应该将数据作为纯⼆进制数据发送。数据库通常也使⽤Blob来描述⼆进制对象,实际上我们基本上是在谈论字节数组。如果你有其他细节需要将⼆进制数据封装为BLOB对象,然后使⽤它ObjectURL()为其⽣成本地URL:var blob = new Blob([arrayBufferWithPNG], {type: "image/png"}), url = ObjectURL(blob), img = new Image(); = function() { ObjectURL(); // clean-up memory Child(this); // add image to DOM} = url; // can now "stream" the bytes请注意,URL可能会在webkit浏览器中添加前缀,因此请使⽤:var url = (URL || webkitURL).createObjectURL(...);

2023年8月1日发(作者:)

什么是BLOBURL,为什么要使⽤它?在百家号上,发现视频src如下所⽰:是可以播放和打开,很神奇,我就去查了⼀下这块。那么问题来了什么是blob⽹址?为什么使⽤它?我可以在服务器上创建⾃⼰的Blob URL吗?如果你有任何额外的细节Blob URL(参考W3C,官⽅名称)或Object-URL(参考MDN和⽅法名称)与Blob或File对象⼀起使⽤。src =“blob:https:// ”我打开了视频src中的blob url,它给出了⼀个错误,我⽆法打开,但与src标签⼀起⼯作,它有多可能?Blob URL只能由浏览器在内部⽣成。ObjectURL()将创建⼀个特殊的Blob或File对象的引⽤,以后可以使⽤它来发布ObjectURL()。这些URL只能在浏览器的单个实例中和同⼀个会话中(即页⾯/⽂档的⽣命周期)在本地使⽤。什么是Blob⽹址? 为什么使⽤它?Blob URL / Object URL是⼀种伪协议,允许Blob和File对象⽤作图像,下载⼆进制数据链接等的URL源。例如,不能处理Image对象的原始字节数据,因为它不知道如何处理它。它需要例如图像(⼆进制数据)通过URL加载。这适⽤于任何需要URL作为源的东西。不⽤上传⼆进制数据,⽽是通过URL提供回来,最好使⽤额外的本地步骤来直接访问数据⽽⽆需通过服务器。对于编码为Base-64的字符串的Data-URI也是更好的选择。Data-URI的问题是每个char在JavaScript中占⽤两个字节。最重要的是,由于Base-64编码增加了33%。Blob是纯粹的⼆进制字节数组,它不像Data-URI那样具有任何重要的开销,这使得它们处理速度越来越快。我可以在服务器上创建⾃⼰的Blob⽹址吗?否,Blob⽹址/对象⽹址只能在浏览器内部制作。可以通过⽂件读取器API创建Blob并获取File对象,尽管BLOB只是意味着Binary Large对象并以字节数组的形式存储。客户端可以请求数据以ArrayBuffer或Blob的形式发送。服务器应该将数据作为纯⼆进制数据发送。数据库通常也使⽤Blob来描述⼆进制对象,实际上我们基本上是在谈论字节数组。如果你有其他细节需要将⼆进制数据封装为BLOB对象,然后使⽤它ObjectURL()为其⽣成本地URL:var blob = new Blob([arrayBufferWithPNG], {type: "image/png"}), url = ObjectURL(blob), img = new Image(); = function() { ObjectURL(); // clean-up memory Child(this); // add image to DOM} = url; // can now "stream" the bytes请注意,URL可能会在webkit浏览器中添加前缀,因此请使⽤:var url = (URL || webkitURL).createObjectURL(...);