Js中的File对象

概述

JavaScript 中存在 File 对象,允许网页中的 JavaScript 访问其内容。

File 对象通常是用户在网页中的一个 <input> 元素上传文件返回的 FileList 对象,或者是拖放操作返回的 DataTransfer 对象,也可以在浏览器中的控制台中自己创建。

File 对象中只存在于浏览器环境中,在 Node 环境不存在!!

构造函数

File 的构造函数很简单,使用 new File() 即返回一个新创建的文件对象

属性及方法

File 接口继承了 Blob 接口的属性,相关属性可以查询 MDN 中的官方文档,此处只列出较为常见的属性。

  • File.lastModified:返回该 File 对象引用文件最后修改时间,返回毫秒数;
  • File.name:返回文件对象名字;
  • File.size:返回文件大小。

由Base64转File对象

在日常开发中,Base64 形式的图片很多,JavaScript 允许将图片的 Base64 编码转换为 File 对象,如下:

function dataURLtoFile(dataurl, filename) {
    // 获取到base64编码
    const base64_str = dataurl.split(',');
    // 将base64编码转为字符串
    const decode_str = atob(base64_str[1]);
    let n = decode_str .length;
    // 创建初始化为0的,包含length个元素的无符号整型数组
    const u8arr = new Uint8Array(n) ;
    while (n--) {
        u8arr[n] = decode_str .charCodeAt(n);
    }
    return new File([u8arr], filename, {
        type: 'image/png',
    });
}

小结

File 对象在 JavaScript 中的使用及其常见,在前端开发中,我们需要对 Javascript 在 Node 环境浏览器环境分别使用的区别和共同点进行了解,File 对象就只存在于浏览器环境中。

JavaScript File 对象和 Blob 对象都用于处理二进制数据,但它们有一些区别。 File 对象是通过用户在文件选择框选择文件后创建的。它继承自 Blob 对象,因此具有 Blob 对象的所有属性和方法。File 对象通常用于处理用户上传的文件。它包含了文件的元数据,如文件名、文件类型和文件大小等。File 对象还提供了一些额外的属性和方法,用于获取文件的相关信息,如最后修改时间和文件的读取操作。 下面是一个创建 File 对象的示例: ```javascript <input type="file" id="file-input" /> <script> const fileInput = document.getElementById("file-input"); const file = fileInput.files[0]; console.log(file.name); // 获取文件名 console.log(file.type); // 获取文件类型 console.log(file.size); // 获取文件大小 </script> ``` Blob 对象用于存储二进制数据,可以包含各种类型的数据,如文本、图像、音频和视频等。Blob 对象通常用于处理非文件类型的二进制数据,例如从网络请求获取的数据或通过 JavaScript 生成的数据。Blob 对象提供了一些方法和属性,用于操作和转换二进制数据,如获取数据大小、切割数据和转换为其他格式(如 ArrayBuffer 或文本)等。 下面是一个创建 Blob 对象的示例: ```javascript const text = "Hello, world!"; const blob = new Blob([text], { type: "text/plain" }); console.log(blob.size); // 获取 Blob 对象的大小 console.log(blob.type); // 获取 Blob 对象的类型 ``` 总结来说,File 对象用于处理用户上传的文件,包含文件的元数据和读取操作,而 Blob 对象用于存储和操作二进制数据,可以包含各种类型的数据。它们在处理二进制数据时有不同的应用场景和用法。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

programming_rooike

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值