关于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-09-09
  • js获取浏览器基本信息大全

    js获取浏览器基本信息大全

    本文整理汇总了js获取浏览器基本信息资料,非常的全面,也对IE及非IE浏览器之间的区别进行了分析,是篇非常不错的文章,这里推荐给大家,前端设计师们千万不要错过
    2014-11-11
  • 详细解读JavaScript的跨浏览器事件处理

    详细解读JavaScript的跨浏览器事件处理

    这篇文章主要介绍了JavaScript的跨浏览器事件处理,以全浏览器兼容为大致目标,需要的朋友可以参考下
    2015-08-08
  • javascript基础的动画教程,直观易懂

    javascript基础的动画教程,直观易懂

    javascript基础的动画教程,直观易懂...
    2007-01-01
  • JavaScript 学习笔记之操作符

    JavaScript 学习笔记之操作符

    本文着重给大家介绍了javascript的操作符,包含一元操作符、位操作符、布尔操作符这3种类型,讲解的十分全面,小伙伴们参考下
    2015-01-01
  • TypeScript具有的几个不同特质

    TypeScript具有的几个不同特质

    这篇文章主要介绍了TypeScript具有的几个不同特质,首先我们先来看看什么是TypeScript呢?TypeScript是微软推出的一个开源语言,用于开发大型JS应用程序。其作者是大名鼎鼎的C#之父Anders Hejlsberg。
    2015-04-04
  • JavaScript中的substr()方法使用详解

    JavaScript中的substr()方法使用详解

    这篇文章主要介绍了JavaScript中的substr()方法使用详解,是JS入门学习中的基础知识,需要的朋友可以参考下
    2015-06-06
  • DOM基础教程之使用DOM

    DOM基础教程之使用DOM

    这篇文章主要介绍了DOM基础教程之使用DOM的相关资料,需要的朋友可以参考下
    2015-01-01
  • javascript学习笔记(一)基础知识

    javascript学习笔记(一)基础知识

    本文是学习笔记系列的第一篇,跟以前一样,介绍些基础知识,包括js基本概念、 JScript 的变量、js的数据类型、3.JScript 的运算符、js流程控制、js函数。有需要的朋友可以参考下
    2014-09-09
  • Javascript实现异步编程的过程

    Javascript实现异步编程的过程

    这篇内容详细分析了Javascript实现异步编程的过程以及原理解释,对此知识点有兴趣的朋友可以学习下。
    2018-06-06

最新评论