Demo
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>图片预览</title> </head> <body> <input type="file"> <img src=""> </body> </html> <script> var input = document.querySelector('input'); input.onchange = function () { //1. 拿到文件 File对象 ,files还是文件列表list,files[0]才是要的对象 var file = this.files[0]; //2. FileReader是接口,创建一个fileReader的对象就可以拿到原型中的方法(有四种) var base64 = new FileReader(); //3. 开始读取文件,读取的是base64的值 base64.readAsDataURL(file); //4. 因为读取文件需要时间,所以要在回调函数中使用读取的结果 base64.onload= function(){ document.querySelector('img').src = base64.result; }; } </script>
此方法的图片不会通过服务器即可预览,可以减轻服务器压力.
FileReader接口事件的用法有四种,其中前三种是读取文件,最后一种是中断读取.
方法名 | 参数 | 描述 |
---|---|---|
readAsBinaryString | file | 将文件读取为二进制编码 |
readAsText | file,[encoding] | 将文件读取为文本 |
readAsDataURL | file | 将文件读取为DataURL |
abort | (none) | 终端读取操作 |