【前端】【H5 API】实现文件读取操作

简介: 【前端】【H5 API】实现文件读取操作

H5 API 实现文件读取操作


该接口通过FileReader对象来读取本地存储的文件,然后使用File对象来指定读取的文件或数据

File对象

  • 可以是来自用户在一个元素上(如<input>)选择文件后返回的FileList对象
  • 可以是自由拖放操作生成的DataTransfer对象
    (dataTransfer对象只能访问文件的一些基本的信息。)

文件的上传

由于Web环境的特殊性,为了考虑文件安全问题,浏览器不允许JavaSctipt直接访问文件系统,使用<input>表单元素的文件域\<input type="file">来实现文件的上传。

input元素还有一个multiple属性(HTML 5新增),可以实现一次上传多个文件。在用户选择文件以后,可以得到一个FileList对象,它代表所选的文件列表。

查看FileList对象

<input type="file" multiple>
  <script>
    var file = document.querySelector('input');
    file.onchange = function() {        // 当用户选择文件后执行此事件
      console.log(this.files);          // 查看FileList对象
    };
  </script>

q2.png

FileList对象代表所选的文件列表,该对象是一个类数组的形式,其中包含一个或多个File对象。如果用户只选择了一个上传文件,那么只需要访问FileList对象的第一个元素,如果FileList对象是类数组对象,可以使用for循环遍历其内部的File对象

for(var i = 0, numFiles = files.length; i < numFiles; i++){
  var files = files[i];
}

在使用FileReader对象前,需要使用new来实例化FileReader()构造函数,获得一个对象。然后通过这个对象的方法和事件,来实现文件的读取等不同的功能。

无论文件是否读取成功,读取文件的方法都不会返回读取的结果,而是将读取结果存储到result属性中。

FileReader对象的常用方法

方法名称 参数 描述
readAsBinaryString file 将文件读取为二进制编码
readAsText file,[ending] 将文件读取为文本
readAsDataURL file 将文件读取为DataURL
abort (none) 中断读取操作

FileReader对象的常用事件

事件名称 描述
onabort 读取中断时触发
onerror 读取发生错误时触发
onloadstart 读取开始时触发
onprogress 正在读取时触发
onload 读取成功时触发
onloadend 读取完成时触发(无论成功或失败)

FileReader对象的使用

上传图片并显示略缩图
<input type="file" multiple>
  <div><img alt="null"></div>
  <script>
    var file = document.querySelector('input');
    file.onchange = function () { // 当用户选择文件后执行此事件
      console.log(this.files); // 查看FileList对象
    };
    //初始化盒子模型
    var img= document.querySelector('img');
    file.onchange = function () {
      // ① 初始化reader对象
      var reader = new FileReader();
      // ② 读取文件内容
      reader.readAsDataURL(this.files[0]); // 方式2:读取图片的缩略图
      // ③ 将读取的内容显示到页面中
      reader.onload = function () { // 读取成功时触发
        img.src = this.result; // 将生成的内容赋值为img图片的src
      };
    }
  </script>

q1.png

上传文档并显示文本
<input type="file" multiple>
  <div>
  </div>
  <script>
    var file = document.querySelector('input');
    var div= document.querySelector('div');
    file.onchange = function () {// 当用户选择文件后执行此事件
        console.log(this.files); // 查看FileList对象
      var reader = new FileReader();// ① 初始化reader对象
      reader.readAsText(this.files[0]);// ② 读取文件内容:读取文本
      // ③ 将读取的内容显示到页面中
      reader.onload = function () { // 读取成功时触发
        console.log('成功');
        div.innerHTML = this.result; // 将生成的内容显示到页面的div元素中
      };
    }
  </script>
相关文章
|
5天前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
29 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
5月前
|
前端开发 API UED
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
Python后端与前端交互新纪元:AJAX、Fetch API联手,打造极致用户体验!
142 2
|
1月前
|
人工智能 JSON 安全
DeepSeek Engineer:集成 DeepSeek API 的开源 AI 编程助手,支持文件读取、编辑并生成结构化响应
DeepSeek Engineer 是一款开源AI编程助手,通过命令行界面处理用户对话并生成结构化JSON,支持文件操作和代码生成。
768 6
DeepSeek Engineer:集成 DeepSeek API 的开源 AI 编程助手,支持文件读取、编辑并生成结构化响应
|
6月前
|
缓存 前端开发 中间件
[go 面试] 前端请求到后端API的中间件流程解析
[go 面试] 前端请求到后端API的中间件流程解析
|
3月前
|
移动开发 前端开发 JavaScript
前端H5使用canvas画爱心以及笑脸
本文介绍了HTML5中的canvas元素及其基本用法,通过JavaScript在canvas上绘制图形。首先简述了canvas的功能,接着详细展示了如何使用`bezierCurveTo`方法绘制爱心和`arc`方法绘制笑脸,并附有示例代码及效果说明。最后总结了canvas在网页图形绘制上的应用潜力。
91 2
|
5月前
|
XML 缓存 JavaScript
提升对前端的认知,不得不了解Web API的DOM和BOM
该文章强调了在前端开发中理解和掌握DOM(文档对象模型)和BOM(浏览器对象模型)的重要性,并介绍了它们的相关操作和应用。
提升对前端的认知,不得不了解Web API的DOM和BOM
|
6月前
|
JSON 前端开发 API
构建前端防腐策略问题之更新getMemoryUsagePercent函数以适应新的API返回格式的问题如何解决
构建前端防腐策略问题之更新getMemoryUsagePercent函数以适应新的API返回格式的问题如何解决
构建前端防腐策略问题之更新getMemoryUsagePercent函数以适应新的API返回格式的问题如何解决
|
4月前
|
移动开发 前端开发 JavaScript
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
前端开发实战:利用Web Speech API之speechSynthesis实现文字转语音功能
553 0
|
6月前
|
移动开发 开发框架 小程序
开发H5程序或者小程序的时候,后端Web API项目在IISExpress调试中使用IP地址,便于开发调试
开发H5程序或者小程序的时候,后端Web API项目在IISExpress调试中使用IP地址,便于开发调试
|
7月前
|
开发框架 前端开发 JavaScript
循序渐进VUE+Element 前端应用开发(13)--- 前端API接口的封装处理
循序渐进VUE+Element 前端应用开发(13)--- 前端API接口的封装处理

热门文章

最新文章

  • 1
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
    29
  • 2
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
    51
  • 3
    【2025优雅草开源计划进行中01】-针对web前端开发初学者使用-优雅草科技官网-纯静态页面html+css+JavaScript可直接下载使用-开源-首页为优雅草吴银满工程师原创-优雅草卓伊凡发布
    26
  • 4
    巧用通义灵码,提升前端研发效率
    93
  • 5
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    141
  • 6
    详解智能编码在前端研发的创新应用
    96
  • 7
    智能编码在前端研发的创新应用
    83
  • 8
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    37
  • 9
    【08】flutter完成屏幕适配-重建Android,增加GetX路由,屏幕适配,基础导航栏-多版本SDK以及gradle造成的关于fvm的使用(flutter version manage)-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
    121
  • 10
    【07】flutter完成主页-完成底部菜单栏并且做自定义组件-完整短视频仿抖音上下滑动页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草央千澈
    75