码迷,mamicode.com
首页 > Web开发 > 详细

html5之文件操作

时间:2015-05-05 19:24:12      阅读:13282      评论:0      收藏:0      [点我收藏+]

标签:

用来把文件读入内存,并且读取文件中的数据。FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据。到目前文职,只有FF3.6+和Chrome6.0+实现了FileReader接口。

1、FileReader接口的方法

FileReader接口有4个方法,其中3个用来读取文件,另一个用来中断读取。无论读取成功或失败,方法并不会返回读取结果,这一结果存储在result属性中。

 

FileReader接口的方法
方法名参数描述
readAsBinaryString file 将文件读取为二进制编码
readAsText file,[encoding] 将文件读取为文本
readAsDataURL file 将文件读取为DataURL
abort (none) 终端读取操作

 

 

2、FileReader接口事件

FileReader接口包含了一套完整的事件模型,用于捕获读取文件时的状态。

 

FileReader接口的事件
事件 描述
onabort 中断
onerror 出错
onloadstart 开始
onprogress 正在读取
onload 成功读取
onloadend 读取完成,无论成功失败

 

 

3、FileReader接口的使用

 

[html] view plaincopy
 
  1. <script type="text/javascript">  
  2. var result=document.getElementById("result");  
  3. var file=document.getElementById("file");  
  4.   
  5. //判断浏览器是否支持FileReader接口  
  6. if(typeof FileReader == ‘undefined‘){  
  7.     result.InnerHTML="<p>你的浏览器不支持FileReader接口!</p>";  
  8.     //使选择控件不可操作  
  9.     file.setAttribute("disabled","disabled");  
  10. }  
  11.   
  12. function readAsDataURL(){  
  13.     //检验是否为图像文件  
  14.     var file = document.getElementById("file").files[0];  
  15.     if(!/image\/\w+/.test(file.type)){  
  16.         alert("看清楚,这个需要图片!");  
  17.         return false;  
  18.     }  
  19.     var reader = new FileReader();  
  20.     //将文件以Data URL形式读入页面  
  21.     reader.readAsDataURL(file);  
  22.     reader.onload=function(e){  
  23.         var result=document.getElementById("result");  
  24.         //显示文件  
  25.         result.innerHTML=‘<img src="‘ + this.result +‘" alt="" />‘;  
  26.     }  
  27. }  
  28.   
  29. function readAsBinaryString(){  
  30.     var file = document.getElementById("file").files[0];  
  31.     var reader = new FileReader();  
  32.     //将文件以二进制形式读入页面  
  33.     reader.readAsBinaryString(file);  
  34.     reader.onload=function(f){  
  35.         var result=document.getElementById("result");  
  36.         //显示文件  
  37.         result.innerHTML=this.result;  
  38.     }  
  39. }  
  40.   
  41. function readAsText(){  
  42.     var file = document.getElementById("file").files[0];  
  43.     var reader = new FileReader();  
  44.     //将文件以文本形式读入页面  
  45.     reader.readAsText(file);  
  46.     reader.onload=function(f){  
  47.         var result=document.getElementById("result");  
  48.         //显示文件  
  49.         result.innerHTML=this.result;  
  50.     }  
  51. }  
  52. </script>  
  53. <p>  
  54.     <label>请选择一个文件:</label>  
  55.     <input type="file" id="file" />  
  56.     <input type="button" value="读取图像" onclick="readAsDataURL()" />  
  57.     <input type="button" value="读取二进制数据" onclick="readAsBinaryString()" />  
  58.     <input type="button" value="读取文本文件" onclick="readAsText()" />  
  59. </p>  
  60. <div id="result" name="result"></div>  

 

 我测试的

<!-- oscar999 -->
  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  <html>
  <head>
  <meta http-equiv="content-type" content="text/html; charset=utf-8">
  <meta name="author" content="oscar999">
  <title></title>
  <script>
  function handleFiles(files)
  {
  if(files.length)
  {
  var file = files[0];
  var reader = new FileReader();
  reader.onload = function()
  {
  document.getElementById("img").src = this.result;
  };
  reader.readAsDataURL(file);
  }
  }
  </script>
   
  </head>
  <body>
   
  <input type="file" id="file" onchange="handleFiles(this.files)"/>
  <div id="filecontent"></div>
  <img src="data:image/png;base64,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">
  </body>
  </html>

可以完整的显示出来图片,只需要将内容贴到任何地方都可以显示出来图片,很方便。

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>拖拽本地图片到页面指定元素内</title>

</head>
<body>
<input type="file" id="file" onchange="change(this)">
<div id="dropBox" style="float:left;width:400px;height:300px;margin:10px 0 0 0;border:1px solid #015EAC;color:#666;overflow:hidden;clear:left;font-size:12px;">拖拽图片到这里!</div>
<script type="text/javascript">

var oDropBox = document.getElementById(‘dropBox‘),
oImgInfo = document.getElementById(‘imgInfo‘);

oDropBox.addEventListener(‘dragover‘, function(e) {
e.stopPropagation();
e.preventDefault();
}, false);
oDropBox.addEventListener(‘drop‘, handleDrop, false);

function handleDrop(e) {

e.stopPropagation();
   e.preventDefault();
if (window.FileReader) {
var fileList = e.dataTransfer.files,  //获取拖拽文件
fileType = fileList[0].type,
     oImg = document.createElement(‘img‘),
     reader = new FileReader();

if (fileType.indexOf(‘image‘) == -1) {
alert(‘请拖拽图片~‘);
return;
}

reader.onload = function(e) {
oImg.src = this.result;
oDropBox.innerHTML = ‘‘;
oDropBox.appendChild(oImg);
oImgInfo.innerHTML = this.result;
}
reader.readAsDataURL(fileList[0])
} else {
alert("buzhichi");
}
}

function change(fileItem){
var oImg = document.createElement(‘img‘)
if(window.FileReader){//chrome,firefox7+,opera,IE10,IE9,IE9也可以用滤镜来实现
oFReader = new FileReader();
oFReader.readAsDataURL(fileItem.files[0]);

oFReader.onload = function (oFREvent) {oImg.src = oFREvent.target.result;};
}
else if (document.all) {//IE8-
fileItem.select();
var reallocalpath = document.selection.createRange().text//IE下获取实际的本地文件路径
if (window.ie6) {
oImg.src = reallocalpath;
}//IE6浏览器设置img的src为本地路径可以直接显示图片
else {
//非IE6版本的IE由于安全问题直接设置img的src无法显示本地图片,但是可以通过滤镜来实现,IE10浏览器不支持滤镜,需要用FileReader来实现,所以注意判断FileReader先
oImg.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=‘image‘,src=\"" + reallocalpath + "\")";
oImg.src = ‘data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==‘;//设置img的src为base64编码的透明图片,要不会显示红xx
}
}
else if (fileItem.files) {//firefox6-
if (fileItem.files.item(0)) {
url = fileItem.files.item(0).getAsDataURL();
oImg.src = url;
}
}
oDropBox.innerHTML = ‘‘;
oDropBox.appendChild(oImg);

}

</script>
</body>
</html>

html5之文件操作

标签:

原文地址:http://www.cnblogs.com/liuwenbohhh/p/4479693.html

(0)
(2)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!