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 相关文章推荐
基于jquery的一个简单的脚本验证插件
Apr 05 Javascript
jQuery参数列表集合
Apr 06 Javascript
基于javascript实现判断移动终端浏览器版本信息
Dec 09 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
Mar 02 Javascript
js改变css样式的三种方法推荐
Jun 28 Javascript
JavaScript中String对象的方法介绍
Jan 04 Javascript
js使用highlight.js高亮你的代码
Aug 18 Javascript
js实现随机点名系统(实例讲解)
Oct 18 Javascript
详解基于Node.js的HTTP/2 Server实践
May 31 Javascript
webpack中如何加载静态文件的方法步骤
May 18 Javascript
Element-UI中关于table表格的那些骚操作(小结)
Aug 15 Javascript
Vue退出登录时清空缓存的实现
Nov 12 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中SQL注入攻击与XSS攻击
2012/06/10 PHP
php调用dll的实例操作动画与代码分享
2012/08/14 PHP
一个PHP的远程图片抓取函数分享
2013/09/25 PHP
Laravel 4 初级教程之Pages、表单验证
2014/10/30 PHP
php利用scws实现mysql全文搜索功能的方法
2014/12/25 PHP
如何在HTML 中嵌入 PHP 代码
2015/05/13 PHP
PHP 7安装使用体验之性能大提升,兼容性强,扩展支持不够(升级PHP要谨慎)
2017/07/27 PHP
实例分析基于PHP微信网页获取用户信息
2017/11/24 PHP
jquery 页面全选框实践代码
2010/04/02 Javascript
Js-$.extend扩展方法使方法参数更灵活
2013/01/15 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
JQuery实现动态添加删除评论的方法
2015/05/18 Javascript
jQuery在线选座位插件seat-charts特效代码分享
2015/08/27 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
js+css实现超简洁的二级下拉菜单效果代码
2015/09/07 Javascript
详解JS面向对象编程
2016/01/24 Javascript
基于jQuery实现弹幕APP
2017/02/10 Javascript
JS实现checkbox互斥(单选)功能示例
2019/05/04 Javascript
node.js使用stream模块实现自定义流示例
2020/02/13 Javascript
js实现无缝轮播图特效
2020/05/09 Javascript
[00:32]2016完美“圣”典风云人物:Maybe宣传片
2016/12/05 DOTA
python使用在线API查询IP对应的地理位置信息实例
2014/06/01 Python
Python使用lxml模块和Requests模块抓取HTML页面的教程
2016/05/16 Python
TensorFlow 模型载入方法汇总(小结)
2018/06/19 Python
PyQt编程之如何在屏幕中央显示窗体的实例
2019/06/18 Python
简单了解python变量的作用域
2019/07/30 Python
Python脚本操作Excel实现批量替换功能
2019/11/20 Python
使用 Python 处理3万多条数据只要几秒钟
2020/01/19 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
岗位竞聘演讲稿
2014/01/10 职场文书
简历上的自我评价怎么写
2014/01/28 职场文书
借款协议书
2014/09/16 职场文书
铁人纪念馆观后感
2015/06/16 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python
Mysql分析设计表主键为何不用uuid
2022/03/31 MySQL