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 AutoComplete自动完成 的使用方法实例
Mar 19 Javascript
自己写了一个展开和收起的多更能型的js效果
Mar 05 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
Dec 31 Javascript
JavaScript在浏览器标题栏上显示当前日期和时间的方法
Mar 19 Javascript
JavaScript 数组some()和filter()的用法及区别
May 20 Javascript
AngularJS控制器之间的通信方式详解
Nov 03 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
Jan 17 Javascript
微信小程序 网络请求(post请求,get请求)
Jan 17 Javascript
详解JS中统计函数执行次数与执行时间
Sep 04 Javascript
Vue2 添加数据可视化支持的方法步骤
Jan 02 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
Nov 04 Javascript
Vue extend的基本用法(实例详解)
Dec 09 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学习之数组值的操作
2011/04/17 PHP
解析centos中Apache、php、mysql 默认安装路径
2013/06/25 PHP
php实现可用于mysql,mssql,pg数据库操作类
2014/12/13 PHP
PHP中CheckBox多选框上传失败的代码写法
2017/02/13 PHP
PHP添加文字水印或图片水印的水印类完整源代码与使用示例
2019/03/18 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
ANT 压缩(去掉空格/注释)JS文件可提高js运行速度
2013/04/15 Javascript
js中settimeout方法加参数
2014/02/28 Javascript
jquery插件推荐浏览器嗅探userAgent
2014/11/09 Javascript
理解JavaScript的变量的入门教程
2015/07/07 Javascript
jQuery+HTML5美女瀑布流布局实现方法
2015/09/21 Javascript
vue使用vue-i18n实现国际化的实现代码
2018/04/08 Javascript
详解小程序退出页面时清除定时器
2019/04/28 Javascript
Express 配置HTML页面访问的实现
2020/11/01 Javascript
python解决Fedora解压zip时中文乱码的方法
2016/09/18 Python
python中matplotlib实现最小二乘法拟合的过程详解
2017/07/11 Python
分数霸榜! python助你微信跳一跳拿高分
2018/01/08 Python
Python实现二叉搜索树BST的方法示例
2019/07/30 Python
Python 使用type来定义类的实现
2019/11/19 Python
opencv+python实现均值滤波
2020/02/19 Python
师范生自我鉴定范文
2013/10/05 职场文书
标准导师推荐信(医学类)
2013/10/28 职场文书
酒店个人培训自我鉴定
2013/12/11 职场文书
计算机专业毕业生求职信
2014/04/30 职场文书
中国梦口号
2014/06/13 职场文书
学雷锋标语
2014/06/25 职场文书
多媒体教室标语
2014/06/26 职场文书
师德标兵先进事迹材料
2014/12/19 职场文书
代理词怎么写
2015/05/25 职场文书
2015年机关作风和效能建设工作总结
2015/07/23 职场文书
python如何正确使用yield
2021/05/21 Python
如何用PHP实现多线程编程
2021/05/26 PHP
Mysql基础知识点汇总
2021/05/26 MySQL
使用pandas生成/读取csv文件的方法实例
2021/07/09 Python
Python绘制散乱的点构成的图的方法
2022/04/21 Python