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 相关文章推荐
JavaScript 浮点数运算 精度问题
Oct 06 Javascript
Kibo 用于处理键盘事件的Javascript工具库
Oct 28 Javascript
jquery利用命名空间移除绑定事件的方法
Mar 11 Javascript
JavaScript实现网页对象拖放功能的方法
Apr 15 Javascript
JavaScript图片轮播代码分享
Jul 31 Javascript
Jquery 效果使用详解
Nov 23 Javascript
Js获取当前日期时间及格式化代码
Sep 17 Javascript
JavaScript仿百度图片浏览效果
Nov 23 Javascript
Web前端开发之水印、图片验证码
Nov 27 Javascript
微信小程序  http请求封装详解及实例代码
Feb 15 Javascript
js实现拖拽与碰撞检测
Sep 18 Javascript
uniapp微信小程序:key失效的解决方法
Jan 20 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
WordPress判断用户是否登录的代码
2011/03/17 PHP
PHP时间和日期函数详解
2015/05/08 PHP
一个无限级XML绑定跨框架菜单(For IE)
2007/01/27 Javascript
ExtJS4给Combobox设置列表中的默认值示例
2014/05/02 Javascript
JS随机调用指定函数的方法
2015/07/01 Javascript
七个不允许错过的jQuery小技巧
2015/12/21 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
2016/06/02 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
微信小程序 二维码canvas绘制实例详解
2017/01/06 Javascript
利用JS实现文字的聚合动画效果
2017/01/22 Javascript
JS实现最简单的冒泡排序算法
2017/02/15 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
2019 年编写现代 JavaScript 代码的5个小技巧(小结)
2019/01/15 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
2019/06/14 Javascript
Node.js+Vue脚手架环境搭建的方法步骤
2020/03/08 Javascript
js实现消灭星星(web简易版)
2020/03/24 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
[56:47]Ti4 循环赛第三日 iG vs Liquid
2014/07/12 DOTA
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
Python单体模式的几种常见实现方法详解
2017/07/28 Python
Python3.5运算符操作实例详解
2019/04/25 Python
Python实现的统计文章单词次数功能示例
2019/07/08 Python
Python enumerate函数遍历数据对象组合过程解析
2019/12/11 Python
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
企划主管岗位职责
2013/12/12 职场文书
综合办公室主任职责
2013/12/16 职场文书
学习型党组织心得体会
2014/09/12 职场文书
个人批评与自我批评材料
2014/10/17 职场文书
教师群众路线学习心得体会
2014/11/04 职场文书
2014年教研工作总结
2014/12/06 职场文书
基层组织建设年活动总结
2015/05/09 职场文书
居委会工作总结2015
2015/05/18 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
MySQL 表空间碎片的概念及相关问题解决
2021/05/07 MySQL
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python
SSM VUE Axios详解
2021/10/05 Vue.js