js基础-File API ★★★

最新推荐文章于 2025-05-06 09:15:00 发布
front_end_fan 最新推荐文章于 2025-05-06 09:15:00 发布
阅读量1.8k 收藏 5
点赞数 1
CC 4.0 BY-SA版权
分类专栏: javascript html5 文章标签: javascript html5 file
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_39198420/article/details/78059092
javascript 同时被 2 个专栏收录
74 篇文章
订阅专栏
html5
17 篇文章
订阅专栏
本文介绍了HTML5中的FileAPI,包括如何使用FileAPI选择和读取本地文件,以及通过拖拽方式选择文件的方法。还详细讲解了FileReaderAPI的使用,如如何读取文件的不同方法及其事件处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

File API

3、文件系统API

3.1 File API

在HTML5中新增了File API,可以让网页要求用户选择本地文件,并且读取这些文件的信息。选择的方式可以是HTML<input>元素,也可以是拖拽。

<input type="file" id="photo">

var selectedFile = document.getElementById('photo');
var file = selectedFile.files[0];
//或者
file = selectedFile.files.item(0)

selectedFile.files返回一个FileList对象(有一个属性length,表示文件(File对象)个数),包含了一个或多个File对象,每个File对象都有自己的属性:

  • file.name:文件名,该属性只读。
  • file.size:文件大小,单位为字节,该属性只读。
  • file.type:文件的MIME类型,如果分辨不出类型,则为空字符串,该属性只读。
  • file.lastModified:文件的上次修改时间,格式为时间戳。
  • file.lastModifiedDate :文件的上次修改时间,格式为Date对象实例。

注意:如果要允许用户选取多个文件,需要加上multiple属性

<input type="file" multiple /> 

一般情况下,我们会为input注册change事件,当文件被选择时,触发change。

selectFile.addEventListener('change',function(){ 
var fileList = this.files;
for(var i = 0; i < fileList.length; i++){
var file = fileList[i]; //或者 fileList.item(0);
}
},false);

3.1.1 拖拽文件

前面也说过,我们也可以通过拖拽方式选择文件。

<div id="dropbox"></div>

dropbox = document.getElementById('dropbox');
dropbox.addEventListener('dragenter',dragenter,false);
dropbox.addEventListener('dragover',dragover,false);
dropbox.addEventListener('drop',drop,false);

在上面的代码中,ID为dropbox的div就是我们拖放目的区域。

拖放事件:

function dragenter(e){ 
e.stopPropagation();
e.preventDefault();
}
function dragover(e){
e.stopPropagation();
e.preventDefault();
}
function drop(e){
e.stopPropagation();
e.preventDefault();

var dt = e.dataTransfer;
var files = dt.files;
}

在上面的代码中,参数e是一个事件对象,该参数的dataTransfer.files属性就是一个FileList对象,里面包含了拖放的文件。

注意:使用拖放事件时,必须阻止dragenter和dragover事件的默认行为,才能触发drop事件。

3.1.2 FileReader API

在上面我们知道如何获取文件信息,如何使用呢?

这时我们就要用到FileReader API了,此API用于读取文件,即把文件内容读入内存。它的参数是File对象或Blob对象。

首先,我们需要实例化FileReader对象:

var reader = new FileReader(); 

对于不同类型的文件,FileReader提供了不同的方法来读取文件:

  • readAsBinaryString(Blob|File):返回二进制字符串,该字符串每个字节包含一个0到255之间的整数。
  • readAsText(Blob|File, opt_encoding):返回文本字符串。默认情况下,文本编码格式是’UTF-8’,可以通过可选的格式参数,指定其他编码格式的文本。
  • readAsDataURL(Blob|File):返回一个基于Base64编码的data-uri对象。
  • readAsArrayBuffer(Blob|File):返回一个ArrayBuffer对象,即固定长度的二进制缓存数据。

    我们来看一个显示用户所选图片的缩略图的例子:
<input type="file" onchange="handleFiles(this.files)"/>

function handleFiles(files){
for(var i = 0; i < files.length; i++){
var file = files[i];
var imageType = /^image\//;
if(!imageType.test(file.type)) continue;
var img = document.createElement('img');
img.file = file;
document.body.appendChild(img);

<span class="hljs-keyword">var</span> reader = <span class="hljs-keyword">new</span> FileReader();
reader.onload = <span class="hljs-function"><span class="hljs-keyword">function</span>(<span class="hljs-params">e</span>)</span>{
   img.src=e.target.result;
};
reader.readAsDataURL(file);

}
}

在上面的代码中,我们通过onchange去监听input内文件信息的变化,通过file.type判断用户选择的是否是图片,这里使用File对象的readAsDataURL()方法来返回一个data URL,然后使用onload事件监听文件是否读取完毕,如果读取完毕,我们就可以事件对象e来读取文件内容,也就是e.target.result;

readAsDataURL()方法用于读取文本文件,它的第一个参数是File或Blob对象,第二个参数是前一个参数的编码方法,如果省略就默认为UTF-8编码。该方法是异步方法,一般监听onload件,用来确定文件是否加载结束,方法是判断FileReader实例的result属性是否有值。其他三种读取方法,用法与readAsDataURL方法类似。

注意:如果浏览器不支持FileReader,你也可以使用URL.createObjectURL(file)方法来创建一个data URL来显示图片缩略图。

FileReader API还有一个abort方法,用于中止文件上传。

FileReader API的其他监听事件

  • onabort方法:读取中断或调用reader.abort()方法时触发。
  • onerror方法:读取出错时触发。
  • onload方法:读取成功后触发。
  • onloadend方法:读取完成后触发,不管是否成功。触发顺序排在 onload 或 onerror 后面。
  • onloadstart方法:读取将要开始时触发。
  • onprogress方法:读取过程中周期性触发。
确定要放弃本次机会?
福利倒计时
: :

立减 ¥

普通VIP年卡可用
立即使用
front_end_fan
关注 关注
  • 1
    点赞
  • 踩
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
  • 分享
    复制链接
    分享到 QQ
    分享到新浪微博
    扫一扫
  • 举报
    举报
专栏目录
JavaScript文件处理 File API
KevinMiGuan的博客
06-11 822
JavaScript文件处理 File API 支持File API的浏览器有IE10+,Firefox3.5+,Opera10.6+,Safari5+,Chrome。 1.在表单元素上<input type="fiel" name="file" id="file" />,可以选择一个或多个文件,通过获取文件元素对象的集合files,来操作每一个对象files[i]; 用法:DOM操作   var files=document.getElementById("file");   var.
js-file-api:客户端js的简单服务器文件api
05-10
JS文件API javascript文件API是我最新的项目,基本上可以使用普通的客户端javascript在服务器上保存数据。 使用API​​密钥,您可以授予应用程序仅对其使用的文件夹访问权限,以存储例如密码和其他敏感数据。 设置: 有两个选项供您选择: 您使用公共API 该网站由我自己托管并且始终在线,要使用它,请将以下脚本添加到您的网站: var FileApi = { server : "https://snurf08.de" , key : "public" , login : function ( apikey ) { FileApi . key = apikey ; } , writedata : function ( data , file , response ) { fetch ( FileApi . server +
参与评论 您还未登录,请先 登录 后发表或查看评论
通过 FILE API 使用 JAVASCRIPT 读取文件
精彩人生
07-14 743
简介 HTML5 终于为我们提供了一种通过 File API 规范与本地文件交互的标准方式。为了举例说明其功能,可使用 File API 在向服务器发送图片的过程中创建图片的缩略图预览,或者允许应用程序在用户离线时保存文件引用。另外,您可以使用客户端逻辑来验证上传内容的 mimetype 与其文件扩展名是否匹配,或者限制上传内容的大小。 该规范通过“本地”文件系统提供了多种文件访问接口:
js的File API和Blob API
最新发布
qq_48795482的博客
05-06 286
文件上传离不开几个重要的API,其中包括FIle、FileReader、Blob等,本文带你了解
javascript File Api
那谁家的博客
04-18 594
属性: 属性 描述 Attributes 设置或返回文件或文件夹的属性 DateCreated 返回指定文件或文件夹的创建时间 DateLastAccessed 返回最近访问文件或文件夹的创建时间 DateLastModified 返回最后修改指定文件和文件夹的日期和日期 Drive 返回指定文件或文件夹所在的驱动器的驱动器号 Name...
JavaScript:File API和Blob API
读心悦
12-02 789
web应用的痛点就是不能操作计算机上的文件。File API和Blob API可以安全访问到客户端上的文件。
JS人脸识别(face-api)
02-01
面部检测是face-api.js的基础功能,它能够识别图像或视频流中的人脸位置。library使用SSD(Single Shot MultiBox Detector)模型进行实时面部检测。SSD是一种高效的物体检测算法,能在单一图像中检测多个目标并输出...
browser-md5-file-1.0.0.zip
11-04
浏览器MD5文件处理库browser-md5-file是一款轻量级的JavaScript工具,主要用于在客户端计算文件的MD5哈希值。这个库特别适用于那些需要验证文件完整性的场景,比如上传文件时确保文件未被篡改或者在不同的设备间同步...
Node.js-FileAPI—一组javascript处理文件的工具
08-10
var imgix = require('fileapi-imgix'); imgix.crop(file, { width: 200, height: 200, crop: 'center' }, function(err, result) { if (!err) { // result是裁剪后的图片Blob对象,可以用来预览或上传 } }); ...
face-api.js使用模型
07-14
总的来说,face-api.js通过提供一系列的预训练模型,使得JavaScript开发者能在浏览器环境中实现复杂的人脸识别任务,极大地拓展了Web应用的可能性。然而,需要注意的是,由于这些模型需要较大的计算资源,所以在实际...
react-image-file-resizer:使用React调整本地图像的大小
04-30
react-image-file-resizer是一个可以重新缩放本地图像的react模块。 您可以更改图像的宽度,高度,格式,旋转度和质量。 它返回调整大小后的图像的新base64 URI或Blob。 URI可用作组件的源。 设置 安装软件包: ...
JavaScript File API实现文件上传预览
10-22
主要为大家介绍了JavaScript File API实现文件上传预览,File API将极大地方便 Web 端的文件上传等操作,本文将介绍 File API的概况,并用两个实例展示File API的应用,感兴趣的小伙伴们可以参考一下
JS中的File(四):文件流Streams API使用详解
weixin_57208584的博客
01-18 4008
PS:涉及到一些基本的文件操作和格式内容知识,可以进入我的主页参考我之前的此系列文章。这个系列我还会继续更新下去的~参考:从 Fetch 到 Streams —— 以流的角度处理网络请求 - 掘金 (juejin.cn)Stream API - Web API 接口参考 | MDN (mozilla.org)在流之前,如果想要对文件资源进行操作,需要先下载完整的文件,等待它反序列化成合适的格式,在完整地对接收到的内容进行统一处理。流出现之后,网络发送文件可以将文件以一块块的数据形式传输,这使得——视频缓冲区
JavaScript File API总结
Shirly_xy的博客
04-13 421
1.基本思路 HTML5在DOM中为文件输入元素添加了一个files集合,在通过文件输入字段选择了一个或多个文件时,files集合将包含一组File对象,每个File对象对应着一个文件,其中每个文件有name, size, type, lastModifiedDate属性。通过监听change事件并读取files集合就可以知道选择的每个文件的信息。示例代码如下:var filesList = do
JavaScript基础知识总结 14:学习JavaScript中的File API、Streams API、Web Cryptography API
热门推荐
学Java,找哪吒
03-27 1万+
目录一、Atomics和SharedArrayBuffer二、原子操作基础1、算术及位操作方法2、原子读和写3、原子交换4、原子Futex操作与加锁三、跨上下文消息四、Encoding API五、File API和Blob API1、File类型2、FileReader类型3、FileReaderSync类型4、Blob与部分读取六、Streams API1、应用场景2、理解流 一、Atomics和SharedArrayBuffer 多个上下文访问SharedArrayBuffer时,如果同时对缓冲区执行操
js文件处理 File API
weixin_30267691的博客
09-27 853
支持File API的浏览器有IE10+,Firefox3.5+,Opera10.6+,Safari5+,Chrome。 1.在表单元素上<input type="fiel" name="file" id="file" />,可以选择一个或多个文件,通过获取文件元素对象的集合files,来操作每一个对象files[i]; 用法:DOM操作   var files=doc...
使用 JavaScript File API 实现文件上传
精彩人生
10-11 671
File API 是 Mozilla 向 W3C 提出的一个草案,旨在用标准 JavaScript API实现本地文件的读取。File API 将极大地方便 Web 端的文件上传等操作,并有望成为未来的 HTML 5规范的一部分。本文将介绍 File API 的概况,并用两个实例
JavaScript File API和Blob API
Hello__World123的博客
06-15 647
FileReader类型表示一种异步文件读取机制。可以把FileReader 想象成类似于XMLHttpRequest,只不过是用于从文件系统读取文件,而不是从服务器读取数据。FileReader 类型提供了几个读取文件。File API 还提供了 FileReader 类型,让我们可以实际从文件中读取数据。这些读取数据的方法为处理文件数据提供了极大的灵活性。例如,为了向用户显示图片,可以将图。片读取为数据 URI,而为了解析文件内容,可以将文件读取为文本。每个file对象都有一些只读属性。
JavaScript FileApi简单介绍--使用XMLHttpRequest完成文件上传
weixin_34367257的博客
04-20 195
为什么80%的码农都做不了架构师?>>> ...
front_end_fan

博客等级

码龄8年
238
原创
371
点赞
599
收藏
153
粉丝
关注
私信

TA的精选

  • 新 vue-cli webpack全局引入jquery、elment-ui

    836 阅读

  • 新 学习webpack

    645 阅读

  • 热 js css+html实现简单的日历

    33369 阅读

  • 热 js监听手机端的touch滑动事件

    21519 阅读

  • 热 设置title的样式

    18186 阅读

查看更多

2018年18篇
2017年289篇

大家在看

  • KNX协议介绍
  • 2025年上半年系统架构师考试-综合知识真题(解析版) 217
  • 联合索引全解析:一棵树,撑起查询的半边天 1204
  • VAWRJA.DLL VAWRF.DLL VAWRD.DLL VASRUS.DLL VASRPTB.DLL VASRJA.DLL VASRF.DLL 316
  • 大数据驱动的危废监管新范式:重庆市企业用电量与产废量关联分析及多维度异常检测

分类专栏

  • ajax
    6篇
  • html5
    17篇
  • CSS3
    16篇
  • javascript
    74篇
  • css
    34篇
  • 纯CSS
    15篇
  • jquery
    35篇
  • vue
    12篇
  • 前端面试题
    4篇
  • 布局
    4篇
  • bootstrap
    6篇
  • 特殊样式
    5篇
  • app
    4篇
  • 日历
    5篇
  • 插件
    13篇
  • 移动端
    13篇
  • 正则表达式
    3篇
  • jquery源码
    14篇
  • 其他
    14篇
  • ES6
    4篇
  • SQL
  • svn
    1篇
  • IOS
    2篇
  • 兼容性
    5篇
  • 分页
  • markdown编辑器
    1篇
  • 图片上传
    1篇
  • 导出
    1篇
  • 导出excel
    1篇
  • 模板引擎
    2篇
  • 计算机基础
  • webpack
    3篇
  • amd/cmd
    1篇
  • promise
    1篇
  • Git
    1篇

展开全部 收起

上一篇:
js基础-客户端存储(Cookie、Storage、IndexedDB)
下一篇:
js基础-Blob (结尾有惊喜!有惊喜!有惊喜!)★★

目录

展开全部

收起

相关专栏

DF后台系统

专栏

0 人学习

硬啃Young老师的Dash-Fastapi后台管理系统,https://gitee.com/insistence2022/dash-fastapi-admin

【硬啃Dash-Fastapi-Admin】03-requirements-pg.txt 速览

js

专栏

7 人学习

js

AngularJS文件上传:详解ng-file-upload

+ JScript

专栏

222 人学习

工作中几乎必遇到的问题和解决方案,让你少走几年弯路。

JavaScript - Blob / File / base64 使用场景介绍与相互转换

目录

展开全部

收起

上一篇:
js基础-客户端存储(Cookie、Storage、IndexedDB)
下一篇:
js基础-Blob (结尾有惊喜!有惊喜!有惊喜!)★★

分类专栏

  • ajax
    6篇
  • html5
    17篇
  • CSS3
    16篇
  • javascript
    74篇
  • css
    34篇
  • 纯CSS
    15篇
  • jquery
    35篇
  • vue
    12篇
  • 前端面试题
    4篇
  • 布局
    4篇
  • bootstrap
    6篇
  • 特殊样式
    5篇
  • app
    4篇
  • 日历
    5篇
  • 插件
    13篇
  • 移动端
    13篇
  • 正则表达式
    3篇
  • jquery源码
    14篇
  • 其他
    14篇
  • ES6
    4篇
  • SQL
  • svn
    1篇
  • IOS
    2篇
  • 兼容性
    5篇
  • 分页
  • markdown编辑器
    1篇
  • 图片上传
    1篇
  • 导出
    1篇
  • 导出excel
    1篇
  • 模板引擎
    2篇
  • 计算机基础
  • webpack
    3篇
  • amd/cmd
    1篇
  • promise
    1篇
  • Git
    1篇

展开全部 收起

目录

评论
被折叠的  条评论 为什么被折叠? 到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值