FileReader vs. window.URL.createObjectURL
FileReader vs. window.URL.createObjectURL
我正在构建一个移动网站,我想使用相机API拍照。图像应显示在网站上,并上传到服务器。根据MDN上Camera API的介绍,可以通过FileReader
或window.URL.createObjectURL
访问并在网站上显示图像。我用iPad (Safari和Chrome)和Android平板电脑(Chrome和Firefox)成功地测试了这些可能的解决方案。
FileReader
和window.URL.createObjectURL
有什么区别?我认为window.URL.createObjectURL
较新,但还不是标准。在性能上有什么不同吗?
有区别
- 间>
-
createObjectURL
同步执行(立即) -
FileReader.readAsDataURL
异步执行(一段时间后)
- 内存使用
-
createObjectURL
返回url和哈希值,并将对象存储在内存中,直到文档触发卸载事件(例如文档关闭)或执行revokeObjectURL
-
FileReader.readAsDataURL
返回base64
,包含许多字符,并使用比blob url更多的内存,但从内存中删除,当你不使用它(由垃圾收集器) -
-
createObjectURL
从ie10和所有现代浏览器 -
FileReader.readAsDataURL
从ie10和所有现代浏览器
对我来说,最好使用blob url(通过
createObjectURL
),它更高效,更快,但如果你使用许多对象url,你需要通过revokeObjectURL
释放这些url(以释放内存)。例如,可以调用URL。imageonload处理程序中的revokeObjectURL和Image对象将保留图像数据,而不会丢失它,Nahuel Greco (c)
-
相关文章:
- 如何使用url加载程序在webpack中导入多个图像
- 使用php或javascript从facebook相册URL中删除多余的部分
- Angular JS IE9 Hashbang url rewriting
- JavaScript下拉菜单-点击按钮并根据所选值重定向到url
- 直接下载文件,而不是从window.open(url)
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- 通过js在新选项卡中有条件地打开url
- Reactjs URL.createObjectURL不是函数
- createObjectURL blob url在Firefox中不安全
- URL.createObjectURL返回一个前缀为null的blob.例如:Blob:null/12415-63
- 如何在“窗口”之间进行选择.URL.createObjectURL()' 和 'window.webkitURL.cre
- 清除由 URL.createObjectURL() 生成的对象
- chrome/ff中带有createObjectURL的对象URL的数据URI
- URL.createObjectURL导致内存泄漏
- URL.用于音频blob的createObjectURL在Firefox中给出TypeError
- FileReader vs. window.URL.createObjectURL
- 如何检查url.createobjecturl生成的uri在typescript中是否仍处于活动状态
- 从img标记(与URL.createObjectURL相反的方法)获取来自(blob)的图像数据
- Setting autorevoke for URL.createObjectURL
- 为什么有人要对URL. createobjecturl生成的URL做XHR ?