Dom(十九) 文件

File对象的属性(只读)

属性说明
lastModified文件的最近修改时间,从1970年开始的间隔时间
lastModifiedDate文件的最近修改日期,已经不推荐使用
name文件名
webkitRelativePath相对于用户所选择的文件夹路径
size文件大小,单位是字节
type文件的MIME类型,比如Image/jpeg

Flie对象的方法

File对象本身没有任何方法,但是Flie对象继承自Blob,Blob有一个方法

Blob.slice([start[,end[,contentType]]])

和File结合使用的对象

FlileList

FileList,可以通过input元素的files属性获得,或者通过Drag和Drop API获取用户拖入到网页中的文件列表

加了multiple属性后,用户就可以加入多个文件,这时候的FlieList就是一个类数组的形式,从下标0开始

属性/方法

属性/方法说明
length包含的文件个数,只读
item()根据索引参数,返回对应的文件

Drag和Drop,拖拽事件

| 名称 | 作用 |

| — | — |

| dragstart | 在拖动时触发 |

| dragend | 在拖动完成时触发 |

| dragenter | 目标元素上绑定dragenter事件,当拖拽元素进入目标元素时触发 |

| dragover | 目标元素上绑定dragover事件, 当拖拽元素在目标元素上移动时触发 |

| drop | 目标元素上绑定drop事件, 并同时取消当前目标元素的dragover的默认事件, 当拖拽元素在目标元素上同时鼠标放开时触发事件.

例: box为目标元素.

box.addEventListener('dragover', function(e){console.log('dragover'); e.preventDefault();});

box.addEventListener('drop', function(e){console.log('drop');});

dropdragend同时绑定时drop事件先触发 |

let drop = document.querySelector(‘.drop’);

drop.addEventListener(‘dragover’,function (params) { /拖动到目标上方的事件/

params.preventDefault(); /不要执行与事件关联的默认动作/

drop.classList.add(‘over’)

});

drop.addEventListener(‘drop’,function (params) { /拖动到目标位置且松开触发/

params.preventDefault();

drop.classList.remove(‘over’);

console.log(params.dataTransfer.files); // 输出了一个fileList

})

FileReader

用来读取文件内容,读取过程是异步的,文件就是FileList的属性值

属性(都是只读)

属性说明
error读文件异常时的错误信息
readyStateFileReader的状态,数值
result文件内容

当中关于readyState的取值

属性说明
FlileReader.EMPTY0尚未加载数据
FlieReader.LOADING1正在加载数据
FileReader.DONE2读取请求已完成

对象的方法

属性说明
abort终止读取文件
readAsArrayBuffer读取的文件内容以ArrayBuffer的形式返回
readAsDataURL读取的文件以data:URL的形式返回
readAsText读取的文件内容以纯文本的形式返回
readAsBinaryString(非标准)读取的文件内容以原始二进制文本的形式返回

对象的事件(也就是可监听的事件)

事件说明
onabort终止读取文件时触发
onerror读取异常时触发
onload去读成功时触发
onloadstart开始读取时触发
onloadend读取完成(可能成功,也可能失败)时触发
onprogress读取过程中触发

Blob

Blob,二进制大对象,是binary large object 的缩写,是用来存储类似文件的原始数据。

Blob构造函数

var aBlob=new Blob(array[,options])

  • array:数组

  • option:目前纳入规范的只有一个type,也就是类型

例如

var af=[‘

’]

var aBlob=new Blob(af,{type:‘text/html’})

方法

silce([start [,end [,contentType]]]):可以切割文件内容,

  • start:起始索引

  • end:结束索引

  • contentType:指定类型

返回值也是一个blob对象,可以使用这个将大文件分割成多个小文件上传,如果上传中断,下次上传使用相同的方法,可以继续上传,但是前段页面一般不用大文件上传,有很多局限

URL

可以用来创建URL对象,也可以用来创建文件对象的临时地址,供用户或开发者使用,比如本地图片预览等

let url=new URL(urlStr,[base])

  • urlStr:url字符串

  • base:如果urlStr是一个相对地址,那么可以指定它的相对目标地址

示例

var url=new URL(‘…/a’,‘http://www.example.com/dogs’)

console.log(url.hostname); //www.example.com

console.log(url.pathname); // /a

方法

方法说明
URL.createObjectURL()创建对象在浏览器中的临时访问地址
URL.revokeObjectURL()回收使用createObjectURL方法创建的临时访问地址

createObjectURL(object)

接收的是一个参数,最常见的是flle或者Blob,返回的是一个可以在浏览器中访问的地址,这个地址的生命周期是当前窗口,窗口关闭或者刷新就无效了

revokeObjectURL(url)

参数就是创建的url地址,将其回收,节省浏览器的资源

示例:

var obURL=URL.createObjectURL(object);

URL.revokeObjectURL(obURL)

实际案例

限制文件的类型

只要将input中的设置accept属性,就可以限制文件类型(image/*是限制图片类型),accpet接收的是mime类型,多个值以逗号分隔,比如“image/png,image/jpeg”,也可以写文件的后缀名“.png,.jpeg”,也支持通配符*,比如“image/*”

限制文件大小,数量

只要拿到对象的fileList就可以判断数量和大小

文件按钮美化

一种方法是将input隐藏,点击btn时,去关联点击input

另外一种是使用label,通过label的for去关联input

label的这种方法可以大大减少关联代码

将文本内容显示到网页上

将页面上的文本创建文本文件并下载

此处输入文本内容

下载

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值