HTML5操作本地文件

HTML5操作本地文件-File对象

HTML5操作本地文件-File对象。

通常如果我们要在网页中使用电脑本地文件,那只能先将本地文件上传到网页的服务器中,然后再从服务器中加载到网页上。但是在HTML5中提供了File API可以用来操作设备中的本地文件。我们可以直接将本地文件拖到html中,我们可以通过JS来控制文件的读取,写入,文件夹,文件等一系列的操作。简单方便。 来介绍几个关于file几个重要的JS对象

1、FileList对象

他是File对象的一个集合,在HTML4标准中文件上传控件只接受一个文件,而在HTML5中,只需要设置multiple,就支持多个文件上传。比如:

<input type="file" multiple="multiple" id='file'>

2、File对象

指向一个具体的文件,它还有了两个属性,name(文件名),lastMondifiedDate(最后修改时间)

3、FileReader对象

这是一个非常重要的对象,用来读取文件里面的数据,提供了三个常用的读取文件数据的方法,另外读取文件数据是异步的,不存在跨域的问题,非常方便。 readAsDataURL(file)——读取内容可以作为URL属性,也就是说可以将一个图片的结果指向给一个img是src属性 readAsBinaryString()——传入一个Blob对象,然后读取数据的结果作为二进制字符串的形式放到FileReader的result属性中 readAsText(Blob blob, optional DOMString encoding) 第一个参数传入Blog对象,然后第二个参数传入编码格式,异步将数据读取成功后放到result属性中,读取的内容是普通的文本字符串的形式。

4、获取拖拽的文件

dataTransfer.files[0]——获取拖拽的第一个文件。 案例:实现拖拽本地图片到浏览器,改变浏览器的背景

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<title>Document</title>
	<style>
		html,body{height: 100%;}
		body{
			text-align: center;
			position: relative;
		}
		#holder{
			position: absolute;
			width: 980px;
			height: 300px;
			font-size: 35px;
			left: 50%;
			top:50%;
			margin-top: -150px;
			margin-left: -490px;
			background:rgba(0,0,0,0.2);
		}
		#canvas{
			position: absolute;
			z-index: -20;
			top:0;
			left: 0;
		}
		#holder.hover{border: 3px dashed #f00;}
		#holder.normal{border: 3px dashed #fff;}
	</style>
	<script type="text/javascript">
	window.onload=function(){
		var holder = document.getElementById('holder')
		var canvas = document.getElementById('canvas')

		//画布的宽高为浏览器宽高
		canvas.width = window.innerWidth;
		canvas.height = window.innerHeight;

		var ctx = canvas.getContext('2d')

		//验证浏览器是否支持File API
		if(window.File&&window.FileReader&&window.FileList&&window.Blob){
			console.log("支持")
		}else{
			console.log("不支持")
		}

		//拖拽文件到选框中改变其边框
		holder.ondragover = function(){
			this.className = 'hover'
			return false;
		}
		//拖拽结束的事件
		holder.ondragend = function(){
			this.className='normal'
			return false;
		}
		//元素正在拖动的时候触发
		holder.ondrop = function(e){
			this.className='normal';

			e.preventDefault();
			var file=e.dataTransfer.files[0];//获取所拖拽的第一个文件
			reader=new FileReader()//创建一个FileReader对象

			//读取本地文件完毕后执行下面的函数
			reader.onload=function(event){
				img=new Image()

				//将读取的二进制位图数据赋予该对象
				img.src=event.target.result;

				img.onload=function(){
					ctx.clearRect(0,0,canvas.width,canvas.height)
					ctx.drawImage(this,0,0,canvas.width,canvas.height)
					delete this//删除Image对象,释放缓存
				}
			}

			reader.readAsDataURL(file)//在FileReader对象中读取文件内容
			return false;

		}
	}
		
	</script>
</head>
<body>
	<canvas id='canvas'></canvas>
	<div class="normal" id="holder">文件拖拽到这里</div>
</body>
</html>

在线操作


  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值