当前位置: 首页 > 面试题库 >

将Blob URL转换为普通URL

文英达
2023-03-14
问题内容

我的页面会生成这样的URL:"blob:http%3A//localhost%3A8383/568233a1-8b13-48b3-84d5-cca045ae384f"如何将其转换为普通地址?

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


问题答案:

从JavaScript创建的URL Blob不能转换为“普通” URL。

一个blob:URL并不是指在服务器上存在的数据,它是指数据您的浏览器目前在存储器中,当前页面。它在其他页面上将不可用,在其他浏览器中将不可用,并且在其他计算机上将不可用。

因此,通常来说,将BlobURL 转换为“正常” URL
是没有意义的。如果要使用普通URL,则必须将数据从浏览器发送到服务器,并使服务器像普通文件一样使它可用。

至少在Chrome中,可以将blob:网址转换为data:网址。您可以使用AJAX请求从blob:URL中“获取”数据(即使实际上只是将其从浏览器的内存中拉出,而不是发出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();

data:URL可能不是您所说的“正常”,它可能会很大。但是,它们的确像普通URL一样工作,因为它们可以共享。它们不特定于当前的浏览器或会话。



 类似资料:
  • 问题内容: 有没有一种方法可以将JSON数组转换为用于Java ListView数据绑定的普通Java数组? 问题答案:

  • 问题内容: 有没有一种方法可以将其转换为: 进入这个? 我正在使用以下代码,这些代码将返回.JAR存档或/ bin目录的完整路径。 问题是,返回a ,我需要一个正常的Windows文件名。我试过添加以下内容: 而这两个回报: 返回: 请注意应将转换为空格。 有没有快速简便的方法来做到这一点? 问题答案: 当前的建议(使用JDK 1.7+)是转换URL→URI→路径。因此,要将URL转换为File,

  • 问题内容: 由于某种原因,我无法在MDN文档中找到这个简单的东西(也许我只是想念它)。 我希望这可以工作: …但是第一行抛出 如何从普通对象制作地图?我真的必须首先将其转换为键值对数组的数组吗? 问题答案: 是的,构造函数采用键值对数组。 是ES2017(19.1.2.5)中可用的新的Object静态方法。 如果您需要支持较旧的环境,并且不适合使用Transpilation,请使用polyfill

  • 问题内容: 我有一个猫鼬的文档,我想在JSON编码之前进行扩展并作为响应发送出去。如果我尝试向文档添加属性,则将其忽略。该属性不会出现无法进行正常扩展的情况。奇怪的是,它可以正常工作并返回具有所有正确属性的对象。有一个更好的方法吗? 问题答案: 猫鼬继承自s,后者有一个方法。我相信您要寻找的应该是的结果。 http://mongoosejs.com/docs/api.html#document_D

  • 问题内容: 我对javascript并不太熟悉,而且令人赞叹,因为我无法向使用ORM名称Sequelize.js从数据库中获取的对象添加新属性。 为了避免这种情况,我使用此技巧: 因此,通常如何向对象添加新属性。 如果有帮助,我使用sequelize-postgres版本2.0.x。 更新。 console.log(节点): 接下来,我想您会想到的是:“好吧,很简单,只需将您的属性添加到dataV

  • 我需要将这个sql查询转换为hibernate条件,请大家帮忙。 按名称顺序按应用描述限制3从设备组中选择名称,计数(*)为应用