javascript HTML5文件上传FileReader API
作者:bea
文件上传功能现在是越来越普遍,所有的社交网站,媒体网站,比如优酷视频,微博等,都提供了上传图片,上传视频等功能。但过去WEB程序员都很清楚,用HTML表单上传文件是很麻烦的事情,特别是你想了解一下用户上传的文件的一些属性,必须等它上传完成后才能知道。 未知的东西上传到服务器上,有可能产生安全问题,也有可能体积太大,超过允许,浪费空间。现在好了,WEB技术在进步,HTML5带来了很多好东西。这个FileReader API就能让你在用户上传之前就能获取上传文件的一些基本属性。
文件上传功能现在是越来越普遍,所有的社交网站,媒体网站,比如优酷视频,微博等,都提供了上传图片,上传视频等功能。但过去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,我们就可以避免用户先将文件上传到服务器,在浏览器客户端我们就可以进行操作。这些在上传到服务器前的预处理是很有必要的。
以上就是本文的全部内容,希望对大家的学习有所帮助。
有用 | 无用
未知的东西上传到服务器上,有可能产生安全问题,也有可能体积太大,超过允许,浪费空间。现在好了,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如何实现360度全景照片问题汇总
- javascript制作照片墙及制作过程中出现的问题
- javascript拖拽效果延伸学习
- javascript事件委托的用法及其好处简析
- 基于javascript制作微博发布栏效果
- 纯js+html和纯css+html制作手风琴效果
- AngularJS中的$watch(),$digest()和$apply()区分
- Angular 根据 service 的状态更新 directive
- jQuery中的Deferred和promise 的区别
- 再次谈论React.js实现原生js拖拽效果引起的一系列问题
- jQuery qrcode生成二维码的方法
- Node.js 应用跑得更快 10 个技巧
- AngularJs 60分钟入门基础教程
- 深入浅析JSON.parse()、JSON.stringify()和eval()的作用详解
- 基于JavaScript实现 网页切出 网站title变化代码
- BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
- js一维数组、多维数组和对象的混合使用方法
- jQuery实现鼠标选文字发新浪微博的方法
- JQuery解析XML的方法小结