Blob URL 是什么?

简介: URL.createObjectURL() 静态方法会创建一个 DOMString

URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象。

在每次调用 createObjectURL() 方法时,都会创建一个新的 URL 对象,即使你已经用相同的对象作为参数创建过。当不再需要这些 URL 对象时,每个对象必须通过调用 URL.revokeObjectURL() 方法来释放。

下面的示例是使用对象URL显示图片。

<body>
  <input type="file" id="input" onchange="handleFiles(this.files)">

  <script>
    function handleFiles (files) {
      let url = URL.createObjectURL(files[0])
      let img = new Image()
      console.log(img, 'ok')
      img.src = url
      var link = document.createElement("a");
      link.innerHTML = '下载'
      link.download = '图片'
      link.href = url
      document.body.appendChild(img)
      document.body.appendChild(link)
    }
  </script>
</body>

Blob URL和Data URL有什么区别?

Blob URL 的显示的形式 blob:域名/e61c67e3-df3a-453a-8f41-df740c1f5faf ,dataURL的显示形式 data:image/jpeg;base64,/9j/4AAQ...

Blob URL 的长度通常比较短,但 Data URL 由于直接存储图片 base64 编码后的数据,很长很长。Data-URI 的问题是每个 char 在 JavaScript 中占用两个字节。最重要的是,由于 Base-64 编码增加了 33%。Blob 是纯粹的二进制字节数组,它不像 Data-URI 那样具有任何重要的开销,这使得它们处理速度越来越快。

我可以在服务器上创建自己的Blob网址吗?

答案为否,Blob网址/对象网址只能在浏览器内部制作。可以通过文件读取器 API 创建 Blob 并获取 File 对象,尽管 BLOB 只是意味着 Binary Large 对象并以字节数组的形式存储。客户端可以请求数据以 ArrayBuffer 或 Blob 的形式发送。服务器应该将数据作为纯二进制数据发送。数据库通常也使用Blob来描述二进制对象,实际上我们基本上是在谈论字节数组。

为什么视频网站的视频链接地址是 blob?

生产场景往往是对切片格式的视频 m3u8 地址进行 blob 格式处理,其实并不是为了加密,因为浏览器还是会解析 blob 并去 get 请求对应的 m3u8 地址,使用 blob uri 的好处在于可以在一定层度上干扰爬虫。在早期一般网站资源文件不怎么通过 referer 设置防盗链,当我们拿到视频的地址后可以随意的下载或使用。Blob URL 这个 URL 的生命周期和创建它的窗口中的 document 绑定。

相关文章
|
2月前
|
存储 API 网络架构
【Azure 存储服务】MP4视频放在Azure的Blob里面,用生成URL在浏览器中打开之后,视频可以正常播放却无法拖拽视频的进度
【Azure 存储服务】MP4视频放在Azure的Blob里面,用生成URL在浏览器中打开之后,视频可以正常播放却无法拖拽视频的进度
|
2月前
|
存储 Java 开发工具
【Azure 存储服务】Java Azure Storage SDK V12使用Endpoint连接Blob Service遇见 The Azure Storage endpoint url is malformed
【Azure 存储服务】Java Azure Storage SDK V12使用Endpoint连接Blob Service遇见 The Azure Storage endpoint url is malformed
|
API
url、base64、blob相互转换方法
url、base64、blob相互转换方法
890 0
|
5月前
uView queryParams 对象转URL参数
uView queryParams 对象转URL参数
58 0
|
5月前
|
JavaScript
vue截取URL中的参数
vue截取URL中的参数
66 0
|
1月前
|
前端开发 JavaScript
前端JS截取url上的参数
文章介绍了两种前端JS获取URL参数的方法:手动截取封装和使用URLSearchParams。
34 0
|
2月前
|
开发框架 前端开发 .NET
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
Asp.net Webapi 的 Post 方法不能把参数加到 URL 中?试试这样写
|
2月前
|
Java
JAVA 获取 URL 指定参数的值
JAVA 获取 URL 指定参数的值
42 0
|
3月前
|
JavaScript 前端开发 数据格式
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
URL编码【详解】——Javascript对URL进行编码解码的三种方式的区别和使用场景,axios请求拦截器中对get请求的参数全部进行URL编码
181 0
|
3月前
|
JavaScript
js 获取并解析 url 中参数的三种方法
js 获取并解析 url 中参数的三种方法
284 0