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中的this的使用
Jul 23 Javascript
鼠标悬浮显示二级菜单效果的jquery实现
Oct 29 Javascript
js兼容火狐显示上传图片预览效果的方法
May 21 Javascript
Sublime Text 3常用插件及安装方法
Dec 16 Javascript
ES6数组的扩展详解
Apr 25 Javascript
jQuery实现上传图片前预览效果功能
Aug 03 jQuery
简单实现jQuery弹窗效果
Oct 30 jQuery
VUE项目初建和常见问题总结
Sep 12 Javascript
生成无限制的微信小程序码的示例代码
Sep 20 Javascript
JavaScript 浏览器对象模型BOM原理与常见用法实例分析
Dec 16 Javascript
JS原形与原型链深入详解
May 09 Javascript
Element-ui upload上传文件限制的解决方法
Jan 22 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
How do I change MySQL timezone?
2008/03/26 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(八)
2014/06/23 PHP
laravel框架关于搜索功能的实现
2018/03/15 PHP
php生成静态页面并实现预览功能
2019/06/27 PHP
ASP.NET jQuery 实例6 (实现CheckBoxList成员全选或全取消)
2012/01/13 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
node.js中的console.warn方法使用说明
2014/12/09 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
浅谈JSON.parse()和JSON.stringify()
2015/07/14 Javascript
给before和after伪元素设置js效果的方法
2015/12/04 Javascript
分享JavaScript监听全部Ajax请求事件的方法
2016/08/28 Javascript
js实现自动图片轮播代码
2017/03/22 Javascript
Vue.js中数据绑定的语法教程
2017/06/02 Javascript
javascript实现循环广告条效果
2017/12/12 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
Vue slot用法(小结)
2018/10/22 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
layui下拉框获取下拉值(select)的例子
2019/09/10 Javascript
基于ts的动态接口数据配置的详解
2019/12/18 Javascript
js实现简单抽奖功能
2020/11/24 Javascript
解决Pycharm调用Turtle时 窗口一闪而过的问题
2019/02/16 Python
Python利用sqlacodegen自动生成ORM实体类示例
2019/06/04 Python
Python基于BeautifulSoup和requests实现的爬虫功能示例
2019/08/02 Python
pytorch多GPU并行运算的实现
2019/09/27 Python
Django-migrate报错问题解决方案
2020/04/21 Python
CSS3中新增的对文本和字体的设置
2020/02/03 HTML / CSS
微软台湾官方网站:Microsoft台湾
2018/08/15 全球购物
美国宠物美容和宠物用品购物网站:Cherrybrook
2018/12/07 全球购物
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
市场总监岗位职责
2015/02/11 职场文书
学校青年志愿者活动总结
2015/05/06 职场文书
秋收起义观后感
2015/06/11 职场文书
爱国教育主题班会
2015/08/14 职场文书
Python 实现定积分与二重定积分的操作
2021/05/26 Python
SQLServer常见数学函数梳理总结
2022/08/05 MySQL