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 相关文章推荐
游戏人文件夹程序 ver 4.03
Jul 14 Javascript
javascript编程起步(第五课)
Jan 10 Javascript
用cssText批量修改样式
Aug 29 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
Mar 05 Javascript
基于javascript数组实现图片轮播
May 02 Javascript
JS学习之表格的排序简单实例
May 16 Javascript
js以分隔符分隔数组中的元素并转换为字符串的方法
Nov 16 Javascript
AngularJS日程表案例详解
Aug 15 Javascript
AjaxFileUpload.js实现异步上传文件功能
Apr 19 Javascript
Vue + Element UI图片上传控件使用详解
Aug 20 Javascript
jsonp格式前端发送和后台接受写法的代码详解
Nov 07 Javascript
微信小程序实现modal弹出框遮罩层组件(可带文本框)
Dec 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
PHP 强制下载文件代码
2010/10/24 PHP
PHP生成器简单实例
2015/05/13 PHP
PHP使用CURL模拟登录的方法
2015/07/08 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
PHP计算当前坐标3公里内4个角落的最大最小经纬度实例
2016/02/26 PHP
PHP+AJAX 投票器功能
2017/11/11 PHP
基于Laravel 5.2 regex验证的正确写法
2019/09/29 PHP
Laravel框架实现即点即改功能的方法分析
2019/10/31 PHP
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
boxy基于jquery的弹出层对话框插件扩展应用 弹出层选择器
2010/11/21 Javascript
javascript文件中引用依赖的js文件的方法
2014/03/17 Javascript
jQuery中DOM操作实例分析
2015/01/23 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
jQuery实现iframe父窗体和子窗体的相互调用
2016/06/17 Javascript
浅谈angularjs module返回对象的坑(推荐)
2016/10/21 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
javascript中mouseenter与mouseover的异同
2017/06/06 Javascript
JavaScript实现重力下落与弹性效果的方法分析
2017/12/20 Javascript
js 图片转base64的方式(两种)
2018/04/24 Javascript
element-ui 中的table的列隐藏问题解决
2018/08/24 Javascript
python通过邮件服务器端口发送邮件的方法
2015/04/30 Python
使用python在本地电脑上快速处理数据
2017/06/22 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
Python查看微信撤回消息代码
2018/06/07 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
django DRF图片路径问题的解决方法
2018/09/10 Python
照片礼物和装饰:MyPhoto
2019/11/02 全球购物
Watch Station官方网站:世界一流的手表和智能手表
2020/01/05 全球购物
你常见到的runtime exception
2016/09/05 面试题
《充气雨衣》教学反思
2014/04/07 职场文书
《红军不怕远征难》教学反思
2014/04/14 职场文书
大专护理专业自荐信
2015/03/25 职场文书
python的列表生成式,生成器和generator对象你了解吗
2022/03/16 Python
分享MySQL常用 内核 Debug 几种常见方法
2022/03/17 MySQL