html5 读取本地文件
尊重原创:http://hushicai.com/2014/03/29/html5-du-qu-ben-di-wen-jian.html
HTML5为我们提供了一种与本地文件系统交互的标准方式:File Api。
该规范主要定义了以下数据结构:
- File
- FileList
- Blob
html5访问本地文件系统时,需要先获取File对象句柄,获取文件句柄的方式主要有两种:表单输入(选择文件)、拖拽。
表单输入:
表单提交是最常用的场景,用户选择文件以后,触发文件选择框的change事件,通过访问文件选择框元素的files属性可以拿到选择的文件列表。如果文件选择框指定了multiple="multiple",则一个文件选择框可以同时选择多个文件,files包含了所有选择的文件对象;如果没有指定,则只能选择一个文件,files[0]就是所选择的文件对象。
<!DOCTYPE html>
<html> <head>
<meta charset="UTF-8">
<title></title> <style type="text/css">
#content{width:600px; height:300px; border: 1px solid #ddd; overflow: auto; margin-top:10px;}
</style>
</head>
<body>
<input type="file" name="" id="myFile" value="" multiple="multiple" />
</body>
<div id="content"></div>
</html>
<script type="text/javascript">
window.onload = function() {
var oFile = document.getElementById("myFile");
var oCotnent = document.getElementById("content");
oFile.addEventListener("change", function(ev) {
var event = ev || window.event;
var files = this.files;
for (var i = 0, len = files.length; i < len; i++) {
var reader = new FileReader();
var file = files[i];
reader.onload = (function(file) {
return function(e) {
var div = document.createElement('div');
div.innerHTML =this.result;
oCotnent.insertBefore(div, null);
};
})(file);
//读取文件内容
reader.readAsText(file,"utf-8");
}
}, false);
}
</script>
拖拽:拖拽是另一种常见的文件访问场景,这种方式通过dataTransfer的对象来获得拖拽文件列表。同样可以支持多文件拖拽。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<style type="text/css">
#area{width:100%;height:200px; line-height: 200px; text-align: center; border: 1px solid #DDDDDD;}
#prev{width:100%;min-height: 400px; border: 1px solid #FF0000;}
</style>
</head>
<body>
<div id="area">将图片拖放到该区域</div>
<h1>图片预览</h1>
<hr />
<div id="prev"></div>
</body>
</html>
<script type="text/javascript">
window.onload = function(){
var oArea = document.getElementById("area");
var oPrev = document.getElementById("prev"); oArea.ondragenter = function(){
oArea.innerHTML = "请释放鼠标";
}
oArea.ondragleave = function(){
oArea.innerHTML = "将图片拖放到该区域";
}
oArea.ondragover = function(ev){
ev.preventDefault();
}
oArea.ondrop = function(ev){
ev.preventDefault();
var files = ev.dataTransfer.files;
for(var i = 0 , len = files.length;i<len;i++){
var file = files[i];
var reader = new FileReader();
reader.readAsDataURL(file);
(function(reader){
reader.onload = function(){
var oImg = document.createElement("img");
oImg.src = this.result;
oPrev.appendChild(oImg);
}
})(reader); } } }
</script>
注意:拖拽需要注意的是,阻止事件冒泡和事件默认行为,防止浏览器自动打开文件等行为。以上代码标红部分。
其实以上两个例子中已经用到了怎么读取文件文件的对象了。即:FileReader(可异步读取)
- FileReader提供的方法:
- readAsBinaryString(File|Blob)
- readAsText(File|Blob [, encoding])
- readAsDataURL(File|Blob)
- readAsArrayBuffer(File|Blob)
- FileReader提供的事件:
- onloadstart
- onprogress:onprogress事件中,提供了三个属性:lengthComputable(不为真,则event.total等于0)、loaded(已经传输的字节)、total(传输文件总字节)
- onload:传输成功完成
- onabort:传输被用户取消
- onerror:传输中出现错误
- onloadend:传输结束,但是不知道成功还是失败
- 文件分割:slice()方法:可见本人博客,ajax大文件切割上传的例子。主要用到了slice()、blob对象和FormData对象。
html5 读取本地文件的更多相关文章
- HTML5读取本地文件
本文转自:转:http://hushicai.com/2014/03/29/html5-du-qu-ben-di-wen-jian.html感谢大神分享. 常见的语言比如php.shell等,是如何读 ...
- HTML5读取本地文件 FileReader API接口
1.FileReader接口的方法 FileReader接口有4个方法,其中3个用来读取文件,另一个用来中断读取.无论读取成功或失败,方法并不会返回读取结果,这一结果存储在result属性中. Fil ...
- H5读取本地文件操作
H5读取本地文件操作 本文转自:转:http://hushicai.com/2014/03/29/html5-du-qu-ben-di-wen-jian.html感谢大神分享. 常见的语言比如php. ...
- .NET 读取本地文件绑定到GridViewRow
wjgl.aspx.cs: using System; using System.Collections; using System.Configuration; using System.Data; ...
- 前台JS(type=‘file’)读取本地文件的内容,兼容各种浏览器
[自己测了下,能兼容各种浏览器,但是读取中文会出现乱码.自己的解决方法是用notepad++把txt文件编码改为utf-8(应该是和浏览器编码保持一致吧?..)] 原文 http://blog.cs ...
- 手工创建tomcat应用,以及实现js读取本地文件内容
手工创建tomcat应用: 1.在webapps下面新建应用目录文件夹 2.在文件夹下创建或是从其他应用中复制:META-INF,WEB-INF这两个文件夹, 其中META-INF清空里面,WEB-I ...
- 【转】flash air中读取本地文件的三种方法
actionscript中读取本地文件操作有两种代码如下 1.使用File和FileStream两个类,FileStream负责读取数据的所以操作:(同步操作) var stream:FileStre ...
- python 读取本地文件批量插入mysql
Uin_phone.txt 本地文件内容 有1000条,这里只是展示前几条,供参考 133584752 133584759 133584764 133584773 133584775 13358477 ...
- FileReader读取本地文件
FileReader是一种异步读取文件机制,结合input:file可以很方便的读取本地文件. 一.input:type[file] file类型的input会渲染为一个按钮和一段文字.点击按钮可打开 ...
随机推荐
- Xamarin.Forms实现touch事件
Xamarin.Forms的View没有touch事件,只能自己实现 首先,在共享项目里面,放入这几个类,结构大概是这样的: using System; using Xamarin.Forms; na ...
- rsync 3.1.3
rsyncd.conf 2018年1月28日 rsyncd配置(5) 2018年1月28日 姓名 rsyncd.conf配置rsync守护进程的方式在file for 概要 rsyncd.conf 描 ...
- centos7安装个人网盘owncloud
现在个人资料越来越重要,网络速度也已经满足日常需要,网盘已经是生活着存取个人数据不可缺少的工具. 下面在linxu centos7下面安装owncloud搭建自己私人网盘: 1.新建一个账号用来安装个 ...
- Python3爬取前程无忧数据分析工作并存储到MySQL
1.导入包import requests #取数from lxml import etree #用xpath解析import pymysql #连接数据库import chardet #自动获取编码2 ...
- 【Linq】
" }; var l1 = strs.ToLookup(a => "a"); //Key=a elements=1,3 var l2 = strs.ToLookup ...
- Python - 模块(一)
目录 Python - 模块(一) 模块的引用方式 常用模块 random(随机模块) os模块 sys 序列化模块 hashlib subprocess optparse struct Python ...
- Android第三方文件选择器:aFileChooser
Android第三方文件选择器:aFileChooser aFileChooser是Android平台上的一个第三方文件选择器,其在github上的项目主页是:https://github.co ...
- Android一键换肤功能:一种简单的实现
Android一键换肤功能:一种简单的实现 现在的APP开发,通常会提供APP的换肤功能,网上流传的换肤代码和实现手段过于复杂,这里有一个开源实现,我找了一大堆,发现这个项目相对较为简洁:htt ...
- 清北学堂模拟赛d5t4 套路
分析:题目非常短,看起来非常难,其实把图一画就明白了.有向图,每个点的出度都是1,那么整个图肯定是环上套链,链上的边无论怎样反向都不会形成环,环上的边也可以随便反向,但是最终不能反为同向的,总方案数减 ...
- Spring MVC-表单(Form)标签-文件上传(File Upload)示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_upload.htm 说明:示例基于Spring MVC 4.1.6. 以下示例显 ...