千家信息网

文件File

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,FileFile API在表单中的文件输入字段的基础上,又添加了一些直接访问文件信息的接口。HTML5在DOM中为文件输入元素添加了一个files集合。在通过文件输入字段选择了一或多个文件时,file
千家信息网最后更新 2025年12月02日文件File

File

  File API在表单中的文件输入字段的基础上,又添加了一些直接访问文件信息的接口。HTML5在DOM中为文件输入元素添加了一个files集合。在通过文件输入字段选择了一或多个文件时,files集合中将包含一组File对象,每个File对象对应着一个文件。每个File对象都有下列只读属性

  name:本地文件系统中的文件名

  size:文件的字节大小

  type:字符串,文件的MIME类型

  lastModifiedDate:字符串,文件上一次被修改的时间

  通过侦听change事件并读取files集合就可以知道选择的每个文件的信息

【隐藏文件input】

  现代浏览器支持隐藏掉默认的的文件输入框元素,使用自定义的界面来充当打开文件选择对话框的按钮。实现起来很简单,只需要使用样式display:none把原本的文件输入框隐藏掉,然后在需要的时候调用它的click()方法就行了

  [注意]IE9-浏览器不支持

FileReader

  File API的功能还不止于此,通过它提供的FileReader类型甚至还可以读取文件中的数据

【构造函数】

  使用FileReader()构造函数来创建一个FileReader对象

var reader = new FileReader();

【属性】

  error:表示在读取文件时发生的错误(只读)

  readyState:表明FileReader对象的当前状态,值为状态常量中的一个(只读)

  状态常量有以下三个

常量名      值    描述EMPTY      0    还没有加载任何数据LOADING    1    数据正在被加载DONE       2    已完成全部的读取请求

  result:表示读取到的文件内容,这个属性只在读取操作完成之后才有效,并且数据的格式取决于读取操作是由哪个方法发起的(只读)

【方法】

  FileReader类型实现的是一种异步文件读取机制。可以把FileReader想象成XMLHttpRequest,区别只是它读取的是文件系统,而不是远程服务器。为了读取文件中的数据,FileReader提供了如下几个方法

  abort():中止该读取操作

  readAsText(file或Blob,encoding):以纯文本形式读取File或Blob对象的内容,将读取到的文本保存在result属性中。第二个参数(可选)用于指定编码类型,默认为UTF-8

  readAsDataURL(file或Blob):读取File或Blob对象的内容,并将文件以数据URI(进行Base64编码)的形式保存在result属性中

  readAsBinaryString(file或Blob):读取File或Blob对象的内容,并将一个字符串保存在result属性中,字符串中的每个字符表示一字节

  readAsArrayBuffer(file或Blob):读取File或Blob对象的内容,并将一个包含文件内容的ArrayBuffer保存在result属性中

  [注意]IE浏览器不支持readAsBinaryString()方法

  这些读取文件的方法为灵活地处理文件数据提供了极大便利。例如,可以读取图像文件并将其保存为数据URI,以便将其显示给用户,或者为了解析方便,可以将文件读取为文本形式

【事件】

  由于读取过程是异步的,因此FileReader也提供了几个事件

  onabort:当读取操作被中止时调用

  onerror:当读取操作发生错误时调用

  onload:当读取操作成功完成时调用

  onloadend:当读取操作完成时调用,不管是成功还是失败。该处理程序在onload或者onerror之后调用

  onloadstart:当读取操作将要开始之前调用

  onprogress:在读取数据过程中周期性调用

  在正常情况下,读取文件时,首先触发loadstart事件,此时的readyState为1,result为空

  接着,每过50ms左右,就会触发一次progress事件,通过事件对象可以获得与XHR的progress事件相同的信息(属性):lengthComputable、loaded和total。另外,尽管可能没有包含全部数据,但每次progress事件中都可以通过FileReader的result属性读取到文件内容,readyState仍然是1

  当文件读取完成时,触发load事件,此时的readyState为2,result为文件内容;如果发生了error事件,就不会发生load事件

  由于种种原因无法读取文件,就会触发error事件。触发error事件时,相关的信息将保存到FileReader的error属性中。这个属性中将保存一个对象,该对象只有一个属性code,即错误码。这个错误码是1表示未找到文件,是2表示安全性错误,是3表示读取中断,是4表示文件不可读,是5表示编码错误

reader.onerror = function(){    output[xss_clean] = "Could not read file, error code is " + reader.error.code;};

  如果想中断读取过程,可以调用abort()方法,这样就会触发abort事件

  在触发load、error或abort事件后,会触发另一个事件loadend。loadend事件发生就意味着已经读取完整个文件,或者读取时发生了错误,或者读取过程被中断

缩略图

  使用FileReader对象的readAsDataURL()方法完成对文件的读取,再通过File对象的type属性筛选出图片

Image preview

Blob URL

  使用Blob URL,也可以用来显示缩略图

文件内容

  readAsText()可以以字符串形式读取并显示文件内容

拖放选择

  围绕读取文件信息,结合使用HTML5拖放API和文件API,能够创造出令人瞩目的用户界面:在页面上创建了自定义的放置目标之后,你可以从桌面上把文件拖放到该目标。与拖放一张图片或者一个链接类似,从桌面上把文件拖放到浏览器中也会触发drop事件。而且可以在event.dataTransfer.files中读取到被放置的文件,当然此时它是一个File对象,与通过文件输入字段取得的File对象一样

  [注意]IE9-浏览器不支持event.dataTransfer

  从电脑上选择一个图片文件,并拖放到网页中指定区域,图片缩略图将显示到网页上

请将图片文件拖放到该区域内

文件进度

  使用onprogress事件的loaded和total属性,可以实现文件进度显示

文件上传

方法一:使用表单提交实现文件上传

  文件上传最基本的方法是使用HTML表单选择本地文件进行上传,在form表单中通过标记选择本地文件。并且,必须在

元素中将enctype设置为"multipart/form-data",将method设置为"post"

  另外,需要在表单中设置一个hidden类型的input框,其中name值为MAX_FILE_SIZE的隐藏值域,通过设置其value值限制上传文件的大小

            

方法二:使用FormData实现文件上传

  创建一个FormData()对象,通过它调用append()方法并传入相应的File对象作为参数。然后,再把FormData对象传递给XHR的send()方法

  [注意]IE9-浏览器不支持使用FormData()上传文件

方法三:使用File API实现文件上传

  通过File API传送二进制文件

  [注意]IE9-浏览器不支持

删除文件

  最后,提一个小知识点,使用控件的value值置空,但第二种方法IE10-浏览器不支持

好的


文件 对象 事件 方法 属性 图片 选择 内容 数据 浏览器 浏览 表单 错误 支持 字符 类型 输入 信息 字符串 形式 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 长沙牛耳软件开发专业 我关于网络安全 火山软件开发平台20破解版 dell 服务器 装系统 宣传网络安全课件 国外服务器放app好吗 潍坊聚红土软件开发有限公司 软件开发 测试流程详细解读 网络安全教育培训考试题 山东省第三届网络安全大赛 csmar数据库股权价值 提示用户不在服务器状态什么意思 为什么要用云服务器学linux 网络安全机制及技术措施 无锡新一代服务器哪个厂家质量好 陕西多线服务器云服务器 云南企业交流外贸软件开发 北京科技有限公司软件开发 串口服务器可以两个交换机连接吗 电信网络安全交流会主持词 数据库加解密实现机制 体育彩票开奖数据库 澳大利亚网络安全行为准则 久大网络技术有限公司简介 服务器运维记录 网络安全设备销售怎么样 中国移动人工智能服务器产品 小米账户不能同步服务器中断 科密考软件数据库 服务器上如何创建数据库
0