将blob URL转换为普通的URL

我的页面生成一个这样的URL: "blob:http%3A//localhost%3A8383/568233a1-8b13-48b3-84d5-cca045ae384f"我怎样才能把它转换成一个普通的地址?

我将它用作<img>src属性。

2 Solutions collect form web for “将blob URL转换为普通的URL”

从JavaScript Blob创build的url无法转换为“普通”url。

blob: URL并不是指服务器上存在的数据,而是指浏览器当前在内存中为当前页面所拥有的数据。 它不会在其他页面上可用,在其他浏览器中不可用,并且不会从其他计算机上获得。

因此,通常将Blob URL转换为“普通”URL是没有意义的。 如果你想要一个普通的URL,你必须把数据从浏览器发送到服务器,并让服务器像普通文件一样使用它。

至less在Chrome中,可以将blob: URL转换为data: URL。 您可以使用AJAX请求从blob: URL中“获取”数据(尽pipe它只是将其从浏览器内存中取出,而不是发出HTTP请求)。

这是一个例子:

 var blob = new Blob(["Hello, world!"], { type: 'text/plain' }); var blobUrl = URL.createObjectURL(blob); var xhr = new XMLHttpRequest; xhr.responseType = 'blob'; xhr.onload = function() { var recoveredBlob = xhr.response; var reader = new FileReader; reader.onload = function() { var blobAsDataUrl = reader.result; window.location = blobAsDataUrl; }; reader.readAsDataURL(recoveredBlob); }; xhr.open('GET', blobUrl); xhr.send(); 

另一种从blob url创build数据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在浏览器中得到很好的支持。 (除了<9,总是<9)

  • 删除.php扩展(明确写入)为友好的URL
  • 获取当前的域名
  • 带有多个正斜杠的url,是否会破坏任何东西?
  • 如何parsing一个URL到JavaScript中的主机名和path?
  • 如何urlencode在Python查询string?
  • 你如何parsing一个在Ruby中的URL来获得主域名?
  • 如何从iOS应用程序启动Safari和打开url
  • 消毒string,使他们的URL和文件名安全?
  • 有没有任何方法来获取没有查询string的url?
  • 正则expression式在string中查找URL
  • 使用前导双斜杠来inheritanceURL中的协议有什么不利之处吗? 即src =“// domain.com”