关于JavaScript的URL.createObjectURL()的使用方法

 更新时间:2023年04月25日 08:33:03   作者:小太阳...  
这篇文章主要介绍了关于URL.createObjectURL()的使用方法,使用createObjectURL可以节省性能并更快速,只不过需要在不使用的情况下手动释放内存,还不清楚的朋友一起来看看吧

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

URL.createObjectURL(blob)和FileReader.readAsDataURL(file)很相似,下面是个人的一些理解,如有不正确的地方,欢迎指出:

主要区别

  • 通过FileReader.readAsDataURL(file)可以获取一段data:base64的字符串
  • 通过URL.createObjectURL(blob)可以获取当前文件的一个内存URL

执行时机:

  • createObjectURL是同步执行(立即的)
  • FileReader.readAsDataURL是异步执行(过一段时间)

内存使用:

  • createObjectURL返回一段带hash的url,并且一直存储在内存中,直到document触发了unload事件(例如:document close)或者执行revokeObjectURL来释放。
  • FileReader.readAsDataURL则返回包含很多字符的base64,并会比blob url消耗更多内存,但是在不用的时候会自动从内存中清除(通过垃圾回收机制)

兼容性方面两个属性都兼容ie10以上的浏览器。

优劣对比:

  • 使用createObjectURL可以节省性能并更快速,只不过需要在不使用的情况下手动释放内存
  • 如果不太在意设备性能问题,并想获取图片的base64,则推荐使用FileReader.readAsDataURL

使用方式:

objectURL = URL.createObjectURL(blob);

示例

html 文件

<input type="file" id="btn" accept="image/*" value="点击上传" />
<img id="img"/>

js 文件

btn.addEventListener('change',function(){
	let file = this.files[0];
	// 进一步防止文件类型错误
	if(!/image\/\w+/.test(file.type)){  
        alert("看清楚,这个需要图片!");  
        return false;  
    }  
	img.src = URL.createObjectURL(file)
})

到此这篇关于关于URL.createObjectURL()的使用方法的文章就介绍到这了,更多相关URL.createObjectURL()用法内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JS中创建函数的三种方式及区别

    JS中创建函数的三种方式及区别

    这篇文章主要介绍了js函数的多种定义方法与其区别,非常的详细,有需要的小伙伴可以参考下
    2016-03-03
  • javascript 函数介绍

    javascript 函数介绍

    在JavaScript中,定义函数最常用的方法就是调用function语句。该语句是由function关键字构成的,也是很重要的函数复用。
    2009-09-09
  • 详解js动态获取浏览器或页面等容器的宽高

    详解js动态获取浏览器或页面等容器的宽高

    这篇文章主要介绍了js动态获取浏览器或页面等容器的宽高,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • IE下写xml文件的两种方式(fso/saveAs)

    IE下写xml文件的两种方式(fso/saveAs)

    Firefox等浏览器不支持写本地文件,这也是为了安全起见,下面与大家分享下IE下写xml文件的几种方式,感兴趣的朋友可以了解下,希望对大家有所帮助
    2013-08-08
  • 各种常用的JS函数整理

    各种常用的JS函数整理

    JS函数经常使用的比较多比如获取页面地址参数、地址跳转、判断是否数字等等,在本文整理了一些,感兴趣的可以参考下
    2013-10-10
  • javascript delete 使用示例代码

    javascript delete 使用示例代码

    javascript delete的一些技巧,主要是从对象中删除一个属性,或从数组中删除一个元素。具体的使用方法,可以参考下面的代码。
    2010-03-03
  • javascript学习笔记(三)显示当时时间的代码

    javascript学习笔记(三)显示当时时间的代码

    主要是为了熟悉javascript中在date对象,大家可以看下。
    2011-04-04
  • JS基础随笔(菜鸟必看篇)

    JS基础随笔(菜鸟必看篇)

    下面小编就为大家带来一篇JS基础随笔(菜鸟必看篇)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • appendChild() 或 insertBefore()使用与区别介绍

    appendChild() 或 insertBefore()使用与区别介绍

    appendChild() 方法在节点的子节点列表末添加新的子节点。insertBefore() 方法在节点的子节点列表任意位置插入新的节点,下面为大家介绍下具体的使用,感兴趣的朋友不要错过
    2013-10-10
  • js用Date对象处理时间实现思路及代码

    js用Date对象处理时间实现思路及代码

    本文主要是为了解决从XML文件中读取数据,然后将里面的数据返回到页面中用一个第三方插件进行绘图,并且提供了详细的解决方法,感兴趣的朋友可以了解下或许对你有所帮助
    2013-01-01

最新评论