js之文件信息读取篇高级基础

js之文件信息读取(FileReader)

首先这里面会讲一些知识点

  • bolb 对象
  • FileReader对象
   		let blob = new Blob(['heewwekgewgwer'], { type: 'text/plain' })
        let blob1 = blob.slice(0, 6, 'text/plain')
        let reader = new FileReader()
        reader.readAsText(blob1)
        // console.log(reader);
        reader.onload = (res) => {
            console.log(res.target.result)//heewwe
        }

file文件是特殊的bolb对象是计算机用于存储2进制的一个信息,然而这个信息只能通过FileReader对象来读取,FileReader常用的一些方法

方法描述
readAsArrayBuffer(file)读取文件或Blob作为数组缓冲区。 一种用例是将大文件发送给服务人员。,常用于分片传输
readAsBinaryString(file)以二进制字符串形式读取文件
readAsText(file, format)以USVString readAsText(file, format)读取文件(几乎像一个字符串),并且可以指定可选格式。常用于读取txt文件
readAsDataURL(file)这将返回一个URL,您可以在其中访问文件的内容,它是Base64编码的,可以发送到您的服务器,常用于读取上传图片,视频等需要url的,src的

获取文件相关信息的两种方式

  • 第一种使用input 标签在上传的时候change事件中 读取当前的input.files[0]
	  <input type="file">
    <script>
        let input = document.querySelector('input')
        input.addEventListener('change', function () {
            let reader = new FileReader()
             reader.readAsText(input.files[0]);
            console.log(reader);
            reader.onload = (res) => {
                console.log(res.target.result)
            }

        })
    </script>
  • 第二种方式通过拖拽的方式获取里面的信息
 	<div id="app"></div>
    <script>
        let app = document.querySelector('#app')
        console.log(app);
        app.ondragover = function (e) {
            e.preventDefault();
        }
        app.ondrop = function (e) {
            e.preventDefault()
            const files = e.dataTransfer.files
            console.log(files);
        }
    </script>

js原生拖拽事件

<div draggable="true|false|auto"> //draggable true可拖拽,false 不可拖拽 , auto跟随浏览器特性

dataTransfer获取拖拽信息

属性描述
files其他属性返回和放置相关的所有文件
types属性使用数组的形式返回当前注册格式
effectAllowed此属性通知浏览器当前可被用户选用的操作
dropEffect拖放的操作类型,决定了浏览器如何显示鼠标形状
items属性返回所有项与相关格式所有文件

拖拽元素与区域元素还有一些共享数据方法api

eg :e.dataTransfer.setDat( ‘data’,‘我是要储存的数据’ ) //在dataTransfer对象中注册此对象(data)
e.dataTransfer.setDat( ‘text’,‘我是要储存的text数据’ )
e.dataTransfer.getData( ‘data’ )
e.dataTransfer.getData( ‘text’ )

方法使用规则
setData(type,data)用于声明发送的数据与类型
getData(type)用于指定类型的data
clearData(type)清除指定类型的数据,不填删除所有
setDragImage(ele,x,y)使用图像元素为参考,同时u使用此参数作为拖动返回的图像
addElement(element)提供一个页面元素作为参考,同时使用参数作为拖放反馈图像

ondragover ,ondrop这两个事件在使用的时候必须禁止默认行为

在拖放的过程中会触发以下事件:

  • 在拖动目标上触发事件 (被拖元素):
方法使用说明
ondragstart用户开始拖动元素时触发
ondrag元素正在拖动时触发
ondragend用户完成元素拖动后触发
  • 释放目标时触发的事件:(拖放区域元素)
方法使用说明
ondragenter当被鼠标拖动的对象进入其容器范围内时触发此事件
ondragover当某被拖动的对象在另一对象容器范围内拖动时触发此事件
ondragleave当被鼠标拖动的对象离开其容器范围内时触发此事件
ondrop在一个拖动过程中,释放鼠标键时触发此事件

完整案例
以下是简易的拖动图片到另一个元素里面,细节自己调整

 <style>
        #app {
            width: 200px;
            height: 200px;
            border: 1px solid red;
        }

        .bos {
            width: 200px;
            height: 200px;
            border: 1px solid blue;
        }

        img {
            width: 100px;
        }
    </style>
     <div id="app"></div>
    <div class="bos"> <img src="./img/a.jpg" alt=""></div>

    <script>
        let app = document.querySelector('#app')
        let bos = document.querySelector('.bos')
        let img = document.querySelector('img')
        //这个地方单纯为了实现修改小手的样式
        bos.ondragstart = function (e) {
            //设置拖拽的背景图 就是把鼠标小手换成背景图
            e.dataTransfer.setDragImage(img, 10, 10)
        }
        app.ondragover = function (e) {
            e.preventDefault();
        }
        app.ondrop = function (e) {
            e.preventDefault()
            // 获取拖拽时候的文件内容
            const files = e.dataTransfer.files[0]
            let reader = new FileReader()
            //读取文件url地址
            reader.readAsDataURL(files)
            reader.onload = res => {
                // 设置背景图 ,你也可以用cavans去画
                app.style.backgroundImage = `url(${res.target.result})`
            }
        }
    </script>
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
JavaScript高级程序设计(第3版) 自学笔记 1 章 JavaScript 简介 .................................1 1.1 JavaScript 简史 ..........................................1 1.2 JavaScript 实现 ..........................................2 1.2.1 ECMAScript...................................3 1.2.2 文档对象模型(DOM)................5 1.2.3 浏览器对象模型(BOM) ............8 1.3 JavaScript 版本 ..........................................8 1.4 小结 ...........................................................9 第 2 章 在 HTML 中使用 JavaScript .........10 2.1 <script>元素........................................10 2.1.1 标签的位置 ..................................12 2.1.2 延迟脚本 ......................................13 2.1.3 异步脚本 ......................................13 2.1.4 在 XHTML 中的用法...................14 2.1.5 不推荐使用的语法.......................16 2.2 嵌入代码与外部文件...............................16 2.3 文档模式..................................................16 2.4 <noscript>元素 ...................................18 2.5 小结 .........................................................18 第 3 章 基本概念............................................19 3.1 语法 .........................................................19 3.1.1 区分大小写 ..................................19 3.1.2 标识符..........................................19 3.1.3 注释..............................................20 3.1.4 严格模式 ......................................20 3.1.5 语句..............................................20 3.2 关键字和保留字 ......................................21 3.3 变量 .........................................................22 3.4 数据类型..................................................23 3.4.1 typeof 操作符............................23 3.4.2 Undefined 类型 .........................24 3.4.3 Null 类型....................................25 3.4.4 Boolean 类型..............................26 3.4.5 Number 类型................................27 3.4.6 String 类型................................32 3.4.7 Object 类型................................35 3.5 操作符 .....................................................36 3.5.1 一元操作符 ..................................36 3.5.2 位操作符......................................39 3.5.3 布尔操作符 ..................................44 3.5.4 乘性操作符 ..................................47 3.5.5 加性操作符 ..................................48 3.5.6 关系操作符 ..................................50 3.5.7 相等操作符 ..................................51 3.5.8 条件操作符 ..................................53 3.5.9 赋值操作符 ..................................53 3.5.10 逗号操作符 ................................54 3.6 语句 .........................................................54 3.6.1 if 语句 ........................................54 3.6.2 do-while 语句...........................55 3.6.3 while 语句 .................................55 3.6.4 for 语句......................................56 3.6.5 for-in 语句 ...............................57 3.6.6 label 语句 .................................58 3.6.7 break 和 continue 语句 ..........58 3.6.8 with 语句....................................60 3.6.9 switch 语句 ...............................60 3.7 函数 .........................................................62 3.7.1 理解参数......................................64 3.7.2 没有重载......................................66 3.8 小结 .........................................................67 . . . . 第 24 章 最佳实践........................................656 24.1 可维护性..............................................656 24.1.1 什么是可维护的代码 .............656 24.1.2 代码约定 ................................657 24.1.3 松散耦合 ................................659 24.1.4 编程实践 ................................662 24.2 性能 .....................................................666 24.2.1 注意作用域 ............................666 24.2.2 选择正确方法.........................667 24.2.3 最小化语句数.........................672 24.2.4 优化 DOM 交互......................673 24.3 部署 .....................................................676 24.3.1 构建过程 ................................676 24.3.2 验证........................................677 24.3.3 压缩........................................679 24.4 小结 .....................................................681 第 25 章 新兴的 API....................................682 25.1 requestAnimationFrame()...........682 25.1.1 早期动画循环.........................682 25.1.2 循环间隔的问题.....................683 25.1.3 mozRequestAnimationFrame.....................................683 25.1.4 webkitRequestAnimationFrame 与 msRequestAnimationFrame.................685 25.2 Page Visibility API ..............................686 25.3 Geolocation API...................................687 25.4 File API................................................689 25.4.1 FileReader 类型.................690 25.4.2 读取部分内容 ........................692 25.4.3 对象 URL ...............................693 25.4.4 读取拖放的文件.....................694 25.4.5 使用 XHR 上传文件...............695 25.5 Web 计时 .............................................696 25.6 Web Workers .......................................697 25.6.1 使用 Worker...........................697 25.6.2 Worker 全局作用域................698

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小菜鸟学代码··

给打赏的我会单独一对一讲解

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值