- Tip
图片预览效果
====================================================================
还是先直接给出 demo 吧,大家可以运行这个 demo 先来看一下效果:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>blob-fileRender</title> <style> #prev1, #prev2 { height: 400px; width: 100%; } img { height: 100%; } </style> </head> <body> <div id="prev1"> <input type="file" id="file1" accept="image/*"> <br> <img src="" alt="" id="view1"> </div> <br><br> <div id="prev2"> <input type="file" id="file2" accept="image/*"> <br> <img src="" alt="" id="view2"> </div> <script> document.getElementById("file1").addEventListener('change', function(){ var files = this.files; var file; if (files && files.length) { file = files[0]; if (/^image\/png$|jpeg$/.test(file.type)) { document.getElementById('view1').src = URL.createObjectURL(file); } else { alert("Please choose an image file with jpg jpeg png."); } } else { alert("Please choose image file"); } }, false); document.getElementById("file2").addEventListener('change', function(){ var files = this.files; var file; if (files && files.length) { file = files[0]; if (/^image\/png$|jpeg$/.test(file.type)) { var reader = new FileReader(); reader.onload = function (e) { document.getElementById('view2').src = e.target.result; }; reader.readAsDataURL(file); } else { alert("Please choose image file with jpg jpeg png."); } } else { alert("Please choose image file"); } }, false); </script> </body> </html>
可以保存这个 html 文件,然后打开。
这里面有两个选择文件的按钮,都实现了选中图片,然后实时预览的效果。但是实现的细节并不一样。
分别使用了 URL 和 FileReader 来实现的。
FileReader
========================================================================
FileReader 对象允许 Web 应用程序异步读取存储在用户计算机上的文件(或原始数据缓冲区)的内容,使用 File 或 Blob 对象指定要读取的文件或数据。
其中 File 对象可以是来自用户在一个 <input>
元素上选择文件后返回的 FileList 对象,也可以来自拖放操作生成后的 DataTransfer 对象,还可以是来自在一个 HTMLCanvasElement 上执行 mozGetAsFile() 方法后返回结果。
想要创建一个 FileReader 对象,很简单,如下:
var reader = new FileReader();
FilerReader 对象有以下方法和事件:
方法概述
abort()
;
readAsArrayBuffer()
;
readAsBinaryString()
;
readAsDataURL()
;
readAsText()
;
事件处理程序
onabort
;
onerror
;
onload
;
onloadend
;
onloadstart
;
onprogress
;
关于 方法概述 和 事件处理程序 的详细使用细则,建议大家阅读这篇较为官方的文档:
https://developer.mozilla.org/zh-CN/docs/Web/API/FileReader
URL
=================================================================
在现代浏览器中,有 URL 这个对象,可以直接使用:
URL.createObjectURL(file);
为了兼容性考虑,我们可以这样:
var URL = window.URL || window.webkitURL;
这个 URL 提供了用于创建和管理对象 URLs 的静态方法。它也可以作为一个构造函数被调用来构造 URL 对象。
语法
调用一个静态方法:
img.src = URL.createObjectURL(blob);
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)
结尾
正式学习前端大概 3 年多了,很早就想整理这个书单了,因为常常会有朋友问,前端该如何学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。
以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。
戳这里免费领取前端学习资料
学习,学习前端该看哪些书,我就讲讲我学习的道路中看的一些书,虽然整理的书不多,但是每一本都是那种看一本就秒不绝口的感觉。
以下大部分是我看过的,或者说身边的人推荐的书籍,每一本我都有些相关的推荐语,如果你有看到更好的书欢迎推荐呀。
戳这里免费领取前端学习资料