比如日常利用的一些音频, 视频, 图片, 我们都可以利用其 Blob 二进制数据流来表征数据, 而非利用 uri,就像常常用到的 image src 的 dataUrl。
要利用 blob 来表征数据资源, 需做到以下两点:
1、做事端返回的为资源的二进制数据

2、前端吸收到二进制数据后, 利用 URL.createObjectURL(blobData) 方法将做事端返回的二进制数据转换为 blob 的 url 资源挂载到相应的资源工具。
实例
对 video.mp4 资源加密, 不该用静态 url 进行加载, 利用 blob url 进行加密。
做事端 index.php
<?php// 返回二进制流数据$file_path = __DIR__ . '/video.mp4';$file_size = filesize($file_path);$oct_data = fread(fopen($file_path, "r"), $filesize);header("Content-type: video/mpeg4;charset=UTF-8");header("Content-Length: " . $filesize);echo $oct_data;
前端 index.html
<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>Blob Url</title></head><body><video id="video" width="400" controls="controls"></video><script type="text/javascript">//创建XMLHttpRequest工具var xhr = new XMLHttpRequest();//配置要求办法、要求地址以及是否同步xhr.open('POST', '/index.php', true);//设置要求结果类型为blobxhr.responseType = 'blob';//要求成功回调函数xhr.onload = function(e) {if (this.status == 200) {//要求成功//获取blob工具var blob = this.response;//获取blob工具地址,并把值赋给容器document.getElementById("video").src = URL.createObjectURL(blob);}};xhr.send();</script></body></html>
这样真是的视频资源静态地址就可以被隐蔽掉了。
var blob = new Blob("保存为blob形式的数据");var url = new URL.createObjectURL(blob);
可以被img等标签利用, 例如:image.src = url;