Javascript 将blob URL转换为普通URL
我的页面生成如下URL:Javascript 将blob URL转换为普通URL,javascript,url,blob,Javascript,Url,Blob,我的页面生成如下URL:“blob:http%3A//localhost%3A8383/568233a1-8b13-48b3-84d5-cca045ae384f”如何将其转换为正常地址 我将它用作属性。从JavaScriptBlob创建的URL无法转换为“正常”URL blob:URL不是指服务器上存在的数据,而是指浏览器当前内存中当前页面的数据。它在其他页面上不可用,在其他浏览器中不可用,在其他计算机上也不可用 因此,一般来说,将BlobURL转换为“正常”URL是没有意义的。如果您想要一个普
“blob:http%3A//localhost%3A8383/568233a1-8b13-48b3-84d5-cca045ae384f”
如何将其转换为正常地址
我将它用作
属性。从JavaScriptBlob
创建的URL无法转换为“正常”URL
blob:
URL不是指服务器上存在的数据,而是指浏览器当前内存中当前页面的数据。它在其他页面上不可用,在其他浏览器中不可用,在其他计算机上也不可用
因此,一般来说,将Blob
URL转换为“正常”URL是没有意义的。如果您想要一个普通的URL,您必须将数据从浏览器发送到服务器,并让服务器使其像普通文件一样可用
至少在Chrome中,可以将blob:
URL转换为data:
URL。您可以使用AJAX请求从blob:
URL“获取”数据(即使它实际上只是从浏览器内存中提取数据,而不是发出HTTP请求)
下面是一个例子:
var blob=newblob([“你好,世界!”],{type:'text/plain'});
var blobUrl=URL.createObjectURL(blob);
var xhr=新的XMLHttpRequest;
xhr.responseType='blob';
xhr.onload=函数(){
var recoveredBlob=xhr.response;
var reader=新文件读取器;
reader.onload=函数(){
var blobAsDataUrl=reader.result;
window.location=blobAsDataUrl;
};
reader.readAsDataURL(recoveredBlob);
};
xhr.open('GET',blobUrl);
xhr.send()代码>从JavaScriptBlob
创建的URL无法转换为“正常”URL
blob:
URL不是指服务器上存在的数据,而是指浏览器当前内存中当前页面的数据。它在其他页面上不可用,在其他浏览器中不可用,在其他计算机上也不可用
因此,一般来说,将Blob
URL转换为“正常”URL是没有意义的。如果您想要一个普通的URL,您必须将数据从浏览器发送到服务器,并让服务器使其像普通文件一样可用
至少在Chrome中,可以将blob:
URL转换为data:
URL。您可以使用AJAX请求从blob:
URL“获取”数据(即使它实际上只是从浏览器内存中提取数据,而不是发出HTTP请求)
下面是一个例子:
var blob=newblob([“你好,世界!”],{type:'text/plain'});
var blobUrl=URL.createObjectURL(blob);
var xhr=新的XMLHttpRequest;
xhr.responseType='blob';
xhr.onload=函数(){
var recoveredBlob=xhr.response;
var reader=新文件读取器;
reader.onload=函数(){
var blobAsDataUrl=reader.result;
window.location=blobAsDataUrl;
};
reader.readAsDataURL(recoveredBlob);
};
xhr.open('GET',blobUrl);
xhr.send()代码>从blob url创建数据url的另一种方法可能是使用画布
var canvas = document.createElement("canvas")
var context = canvas.getContext("2d")
context.drawImage(img, 0, 0) // i assume that img.src is your blob url
var dataurl = canvas.toDataURL("your prefer type", your prefer quality)
正如我在mdn中所看到的,canvas.toDataURL受到浏览器的良好支持。(除了ie之外,从blob url创建数据url的另一种方法可能是使用canvas
var canvas = document.createElement("canvas")
var context = canvas.getContext("2d")
context.drawImage(img, 0, 0) // i assume that img.src is your blob url
var dataurl = canvas.toDataURL("your prefer type", your prefer quality)
正如我在mdn中看到的,canvas.toDataURL受到浏览器的良好支持。(如前一个答案所述,除了ie之外,没有办法将其解码回url,即使您尝试从chrome devtools面板查看它,url可能仍然编码为blob
然而,获取数据是可能的,获取数据的另一种方法是将数据放入锚并直接下载
<a href="blob:http://example.com/xxxx-xxxx-xxxx-xxxx" download>download</a>
将其插入包含blob url的页面,然后单击按钮,即可获得内容
另一种方法是通过代理服务器拦截ajax调用,然后您可以查看真实的图像url。正如前面的答案所说,没有办法将其解码回url,即使您尝试从chrome devtools面板查看它,url也可能仍然编码为blob
然而,获取数据是可能的,获取数据的另一种方法是将数据放入锚并直接下载
<a href="blob:http://example.com/xxxx-xxxx-xxxx-xxxx" download>download</a>
将其插入包含blob url的页面,然后单击按钮,即可获得内容
另一种方法是通过代理服务器拦截ajax调用,然后您可以查看真实的图像url。对于那些来这里为我寻找下载blob url视频/音频的方法的人来说。简言之,您需要通过Chrome->网络选项卡在所需网页上找到一个*.m3u8文件并粘贴它变成一个VLC播放器
另一个指南向您展示了如何下载。对于那些来这里寻找下载blob url视频/音频方法的人,对我来说。简言之,您需要通过Chrome->网络选项卡在所需网页上找到一个*.m3u8文件,并将其粘贴到VLC播放器中
另一个指南向您展示了如何使用。找到了这个答案,并希望引用它,因为它看起来比公认的答案干净得多:
函数BLOBTODATURL(blob,回调){
var fileReader=newfilereader();
fileReader.onload=函数(e){callback(e.target.result);}
fileReader.readAsDataURL(blob);
}
找到此答案,并希望引用它,因为它看起来比公认的答案干净得多:
函数BLOBTODATURL(blob,回调){
var fileReader=newfilereader();
fileReader.onload=函数(e){callback(e.target.result);}
fileReader.readAsDataURL(blob);
}
我参加聚会迟到了
如果您想下载内容,只需立即使用fetch
fetch(blobURL)
.then(res => res.blob())
.then(blob => /*do what you want with the blob here*/)
我很晚才去参加聚会
如果您想下载内容,只需立即使用fetch
fetch(blobURL)
.then(res => res.blob())
.then(blob => /*do what you want with the blob here*/)
即使在德