博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何预览将要上传的图片-使用H5的FileAPI
阅读量:4623 次
发布时间:2019-06-09

本文共 2010 字,大约阅读时间需要 6 分钟。

这篇将要说的东西已经不新鲜了.

  参考资料:  (鉴于作者在美国, 我姑且认为作者母语是英语, 当然链接中有本地化可以选择中文)

要做什么效果呢, 就是页面上有个<input type="file" />, 用户选择需要上传的图片后, 页面上显示将要上传的图片.

以前呢, 需要Ajax将原图上传到服务器, 得到成功响应后在页面上添加一张图片. 如果用户发现上传错了, 需要把服务器上的相应图片删除.

现在呢, 可以这样, 先上代码:

document.querySelector('#upfile').onchange = function (evt) {    var files = evt.target.files;    for(var i = 0, f; f = files[i]; i++){        if(!f.type.match('image.*')) continue;                var reader = new FileReader();        reader.onload = (function(theFile){            return function(e){                var img = document.createElement('img');                img.title = theFile.name;                img.src = e.target.result;                document.body.appendChild(img); //这里你想插哪插哪              }        })(f);        reader.readAsDataURL(f);    }  }
1 document.querySelector('#upfile').onchange = function () { 2     var fileReader = new FileReader(); 3     fileReader.onload = function (e) { 4         if (fileReader.readyState == FileReader.DONE) { 5             var img = document.createElement('img'); 6             img.src = this.result; 7             document.body.appendChild(img); //示例只是简单插入body 8         } 9     }10     //一次加载多个文件11     var i = 0, src = this.files;12     fileReader.readAsDataURL(src[i]);13     fileReader.onloadend = function () {14         i++;15         if (i < src.length) fileReader.readAsDataURL(src[i]);16     }17 }
这是我写的, 你们就别看了

  转载请注明出处: 

相应的html节点: <input type="file" id="upfile" multiple /> (如果不使用多选除去multiple)

这段代码的关键在被实例化的FileReader对象上, FileReader包括四个异步读取文件的选项:

  • FileReader.readAsBinaryString(File|Blob) // result将包含二进制字符串形式的数据
  • FileReader.readAsText(File|Blob, [encoding]) // result将包含字符串形式的数据, 编码格式默认utf-8, 可通过encoding参数指定
  • FileReader.readAsDataURL(File|Blob) // result将包含数据网址形式的数据
  • FileReader.readAsArrayBuffer(File|Blob) // result将包含ArrayBuffer形式的数据

调用某种方法后, 会有 onloadstart, onprogress, onload, onabort, onerror 和 onloadend 这几种事件.

当然, FileAPI可不只有这点东西, 更多的请看参考资料.

转载于:https://www.cnblogs.com/zaiyuzhong/p/reading-files-by-fileAPIs.html

你可能感兴趣的文章
算法练习2---斐波那契数列java版
查看>>
用VISIO2013绘制E-R图
查看>>
每日站立会议03
查看>>
软件工程第一次作业
查看>>
初步了解HTML
查看>>
九度OJ 1165:字符串匹配 (模式匹配)
查看>>
Swift Storyboard找不到类文件
查看>>
Hibernate-延迟加载和立即加载
查看>>
Java中数据类型的转换
查看>>
闲扯一篇 聊聊与博客园代码改变世界的那些事
查看>>
237. Delete Node in a Linked List
查看>>
【口胡】简谈福建省夏令营
查看>>
wince 位图的使用
查看>>
WCF 配置说明
查看>>
Design Patterns Addendum
查看>>
List of FTP Sever/Client Software
查看>>
IDEA 14快捷键
查看>>
浅谈SQL Server中的三种物理连接操作
查看>>
基于linux-2.6.35的class_create(),device_create解析
查看>>
docker学习笔记二
查看>>