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调用flash的效果代码
Apr 26 Javascript
原生javascript实现隔行换色
Jan 04 Javascript
简介JavaScript中的italics()方法的使用
Jun 08 Javascript
AngularJs中route的使用方法和配置
Feb 04 Javascript
JavaScript+CSS实现的可折叠二级菜单实例
Feb 29 Javascript
Bootstrap页面布局基础知识全面解析
Jun 13 Javascript
Bootstrap 源代码分析(未完待续)
Aug 17 Javascript
针对JavaScript中this指向的简单理解
Aug 26 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
Sep 08 Javascript
ES6/JavaScript使用技巧分享
Dec 14 Javascript
深入浅析js原型链和vue构造函数
Oct 25 Javascript
详解key在Vue列表渲染时究竟起到了什么作用
Apr 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
Yii2使用dropdownlist实现地区三级联动功能的方法
2016/07/18 PHP
PHP+Ajax异步带进度条上传文件实例
2016/11/01 PHP
TNC vs IO BO3 第二场2.13
2021/03/10 DOTA
原生js操作checkbox用document.getElementById实现
2013/10/12 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
基于jQuery仿淘宝产品图片放大镜代码分享
2020/06/23 Javascript
AngularJs实现聊天列表实时刷新功能
2017/06/15 Javascript
vue项目中v-model父子组件通信的实现详解
2017/12/10 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
在layui框架中select下拉框监听更改事件的例子
2019/09/20 Javascript
vue.js实现图书管理功能
2019/09/24 Javascript
[02:19]2014DOTA2国际邀请赛 专访820少年们一起去追梦吧
2014/07/14 DOTA
[53:15]Mineski vs iG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python代码的打包与发布详解
2014/07/30 Python
Python ValueError: invalid literal for int() with base 10 实用解决方法
2015/06/21 Python
Python实现的端口扫描功能示例
2018/04/08 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
2018/04/26 Python
Python堆排序原理与实现方法详解
2018/05/11 Python
python实现简易动态时钟
2018/11/19 Python
python实现桌面壁纸切换功能
2019/01/21 Python
python turtle库画一个方格和圆实例
2019/06/27 Python
python实现最大子序和(分治+动态规划)
2019/07/05 Python
基于python求两个列表的并集.交集.差集
2020/02/10 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
pycharm激活码2020最新分享适用pycharm2020最新版亲测可用
2020/11/22 Python
python中altair可视化库实例用法
2021/01/26 Python
Html5 Canvas实现图片标记、缩放、移动和保存历史状态功能 (附转换公式)
2020/03/18 HTML / CSS
面向对象编程是如何提高软件开发水平的
2014/05/06 面试题
使用C#编写创建一个线程的代码
2013/01/22 面试题
刊首寄语大全
2014/04/11 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
最新的离婚协议书范本!
2019/07/02 职场文书
导游词之重庆渣滓洞
2020/01/08 职场文书
golang连接MySQl使用sqlx库
2022/04/14 Golang