javascript HTML5文件上传FileReader API


Posted in Javascript onMarch 27, 2020

文件上传功能现在是越来越普遍,所有的社交网站,媒体网站,比如优酷视频,微博等,都提供了上传图片,上传视频等功能。但过去WEB程序员都很清楚,用HTML表单上传文件是很麻烦的事情,特别是你想了解一下用户上传的文件的一些属性,必须等它上传完成后才能知道。

未知的东西上传到服务器上,有可能产生安全问题,也有可能体积太大,超过允许,浪费空间。现在好了,WEB技术在进步,HTML5带来了很多好东西。这个FileReader API就能让你在用户上传之前就能获取上传文件的一些基本属性。

HTML代码

这个FileReader API 的工作原理和 File API 一样,需要使用input[type="file"] 元素:

<-- 一个能上传多媒体文件的表单 -->
<input type="file" id="upload-file" multiple />

<-- 显示图片的地方 -->
<div id="destination"></div>

在File API这篇文章里有详细的关于能读取到的文件的相关信息,比如地址,体积,尺寸大小,文件类型等等。

JavaScript

这个例子中我们用input表单域上传一张图片,当用户在自己的电脑里选中一张图片后,这个图片会被显示到页面上:

document.getElementById('upload-file').addEventListener('change', function() {
 var file;
 var destination = document.getElementById('destination');
 destination.innerHTML = '';

 // 循环用户多选的文件
 for(var x = 0, xlen = this.files.length; x < xlen; x++) {
 file = this.files[x];
 if(file.type.indexOf('image') != -1) { // 非常简单的交验

 var reader = new FileReader();

 reader.onload = function(e) {
 var img = new Image();
 img.src = e.target.result; // 显示图片的地方

 destination.appendChild(img);
 };
 
 reader.readAsDataURL(file);
 }
 }
});

这个例子里,我们使用FileReader里的readAsDataURL方法将图片内容转换成base64编码的字符串,然后使用图片的data URI方式显示它。其它的FileReader读取方法还有readAsText, readAsArrayBuffer和readAsBinaryString等

有了这个FileReader API,我们就可以避免用户先将文件上传到服务器,在浏览器客户端我们就可以进行操作。这些在上传到服务器前的预处理是很有必要的。

以上就是本文的全部内容,希望对大家的学习有所帮助。

Javascript 相关文章推荐
在IE上直接编辑网页内容的js代码(IE地址栏js)
Apr 27 Javascript
extjs 3.31 TreeGrid实现静态页面加载json到TreeGrid里面
Apr 02 Javascript
JS中的数组的sort方法使用示例
Jan 22 Javascript
JS数组(Array)处理函数整理
Dec 07 Javascript
JavaScript中日期的相关操作方法总结
Oct 24 Javascript
Bootstrap进度条组件知识详解
May 01 Javascript
jQuery 选择器(61种)整理总结
Sep 26 Javascript
通过bootstrap全面学习less
Nov 09 Javascript
js的函数的按值传递参数(实例讲解)
Nov 16 Javascript
Angular实现双向折叠列表组件的示例代码
Nov 21 Javascript
vue 实现websocket发送消息并实时接收消息
Dec 09 Javascript
JavaScript onclick事件使用方法详解
May 15 Javascript
JavaScript中文件上传API详解
Apr 01 #Javascript
jquery表单验证插件formValidator使用方法
Apr 01 #Javascript
jquery分页插件jquery.pagination.js实现无刷新分页
Apr 01 #Javascript
jquery分页插件jquery.pagination.js使用方法解析
Apr 01 #Javascript
jQuery实现下拉加载功能实例代码
Apr 01 #Javascript
Extjs实现下拉菜单效果
Apr 01 #Javascript
实例讲解jQuery EasyUI tree中state属性慎用
Apr 01 #Javascript
You might like
php与java通过socket通信的实现代码
2013/10/21 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
基于PHP的加载类操作以及其他两种魔术方法的应用实例
2017/08/28 PHP
php+websocket 实现的聊天室功能详解
2020/05/27 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
js中的值类型和引用类型小结 文字说明与实例
2010/12/12 Javascript
Jquery实现自定义弹窗示例
2014/03/12 Javascript
javascript学习笔记(四)function函数部分
2014/09/30 Javascript
js判断一个字符串是否包含一个子串的方法
2015/01/26 Javascript
javascript+HTML5的Canvas实现Lab单车动画效果
2015/08/07 Javascript
JS获取及验证开始结束日期的方法
2016/08/20 Javascript
js登录滑动验证的实现(不滑动无法登陆)
2018/01/03 Javascript
浅谈webpack 构建性能优化策略小结
2018/06/13 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
2019/06/24 Javascript
微信小程序点击生成朋友圈分享图(遇到的坑)
2020/06/17 Javascript
python进程管理工具supervisor使用实例
2014/09/17 Python
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
利用Python爬虫给孩子起个好名字
2017/02/14 Python
python实现校园网自动登录的示例讲解
2018/04/22 Python
python定向爬虫校园论坛帖子信息
2018/07/23 Python
在Python中字典根据多项规则排序的方法
2019/01/21 Python
python全栈要学什么 python全栈学习路线
2019/06/28 Python
html5的websockets全双工通信详解学习示例
2014/02/26 HTML / CSS
会走动的图形html5时钟示例
2014/04/27 HTML / CSS
HTML5、Select下拉框右边加图标的实现代码(增进用户体验)
2017/10/16 HTML / CSS
大学生的四年学习自我评价
2013/12/13 职场文书
社区工作者思想汇报
2014/01/13 职场文书
项目合作协议书
2014/04/16 职场文书
国际残疾人日广播稿范文
2014/10/09 职场文书
自查自纠整改报告
2014/11/06 职场文书
2014年政协委员工作总结
2014/12/01 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
党员干部学习三严三实心得体会
2016/01/05 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js
Python编写nmap扫描工具
2021/07/21 Python