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 相关文章推荐
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
Oct 22 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
Aug 24 Javascript
jQuery前端开发35个小技巧
May 24 Javascript
基于JavaScript实现轮播图代码
Jul 14 Javascript
Web前端开发之水印、图片验证码
Nov 27 Javascript
js 性能优化之算法和流程控制
Feb 15 Javascript
Vue2.0 从零开始_环境搭建操作步骤
Jun 14 Javascript
激动人心的 Angular HttpClient的源码解析
Jul 10 Javascript
微信小程序身份证验证方法实现详解
Jun 28 Javascript
bootstrap table插件动态加载表头
Jul 19 Javascript
JS常用跨域方法实现原理解析
Dec 09 Javascript
AJAX引擎原理以及XmlHttpRequest对象的axios、fetch区别详解
Apr 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的时间戳与具体时间转化的简单实现
2016/06/13 PHP
php实现session共享的实例方法
2019/09/19 PHP
laravel 解决Eloquent ORM的save方法无法插入数据的问题
2019/10/21 PHP
PHP设计模式之命令模式示例详解
2020/12/20 PHP
jQuery 学习第六课 实现一个Ajax的TreeView
2010/05/17 Javascript
基于jquery的模态div层弹出效果
2010/08/21 Javascript
解决jquery的.animate()函数在IE6下的问题
2010/12/03 Javascript
javascript学习笔记(三) String 字符串类型介绍
2012/06/19 Javascript
js报$ is not a function 的问题的解决方法
2014/01/20 Javascript
21个值得收藏的Javascript技巧
2014/02/04 Javascript
Textarea输入字数限制实例(兼容iOS&amp;安卓)
2017/07/06 Javascript
vue父子组件的嵌套的示例代码
2017/09/08 Javascript
浅谈react前后端同构渲染
2017/09/20 Javascript
vue+element的表格实现批量删除功能示例代码
2018/08/17 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
vuex实现像调用模板方法一样调用Mutations方法
2019/11/06 Javascript
JS实现吸顶特效
2020/01/08 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
Python使用combinations实现排列组合的方法
2018/11/13 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
python 操作hive pyhs2方式
2019/12/21 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
2020/03/05 Python
Python监听剪切板实现方法代码实例
2020/11/11 Python
AmazeUI底部导航栏与分享按钮的示例代码
2020/08/18 HTML / CSS
澳大利亚床上用品、浴巾和家居用品购物网站:Bambury
2020/04/16 全球购物
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
《两只鸟蛋》教学反思
2014/02/10 职场文书
技校毕业生个人学习的自我评价
2014/02/21 职场文书
大学军训感言800字
2014/02/27 职场文书
汉语言文学专业求职信
2014/06/19 职场文书
财务会计专业自荐书
2014/06/30 职场文书
韩语专业职业生涯规划范文:成功之路就在我们脚下
2014/09/11 职场文书
大三学生英语考试作弊检讨书
2015/01/01 职场文书
追悼会家属答谢词
2015/09/29 职场文书
php中配置文件保存修改操作 如config.php文件的读取修改等操作
2021/05/12 PHP