首页 > 其他分享 >前端处理 File 的基础方法

前端处理 File 的基础方法

时间:2023-09-18 22:02:08浏览次数:33  
标签:const 处理 前端 URL Blob File new 方法

在前端开发过程中,处理 File 对象的场景还是蛮多的,熟练掌握对 File 对象的处理方法,可以极大提高前端工作的幸福度。

JavaScript 处理 File 对象的主要方式是通过 HTML5 的 File API。File API 提供了一组用于处理本地文件的 API,包括创建、读取、写入和删除文件等操作。下面是一些常用的 File API 方法:

createObjectURL()

createObjectURL() 方法用于创建一个可以用于展示媒体文件的 URL。这个方法主要用于浏览器中的媒体文件,例如图片、音频和视频等。createObjectURL() 方法创建的 URL 可以用于在页面上展示媒体文件,或者用于在其他 JavaScript 代码中访问和处理媒体文件。

createObjectURL() 方法接受一个 File 对象或 Blob 对象作为参数,并返回一个可以用于展示媒体文件的 URL。在创建 URL 时,如果媒体文件的类型为 text/plain,则该方法会自动将其转换为 text/html 类型。

const file = new File('image.jpg', 'image.jpg');
const imageUrl = URL.createObjectURL(file);
document.body.appendChild(new Image(imageUrl));

在上面的代码中,我们首先定义了一个 File 对象,表示要展示的图片文件。然后,我们使用 createObjectURL() 方法创建了一个 URL,并将其赋值给一个变量 url。最后,我们使用 new Image() 方法创建一个新的 Image 对象,并将 URL 赋值给它的 source 属性。这样就可以在页面上展示图片了。

Blob()

Blob() 方法用于创建一个新的 Blob 对象。Blob 对象可以表示任何类型的数据,包括文本、图像、音频和视频等。我们可以使用 Blob() 方法创建一个用于表示文本的 Blob 对象:

const text = 'Hello, World!';
const blob = new Blob([text], {type: 'text/plain'});

需要注意的是,Blob() 方法创建的 Blob 对象的内容是固定的,不会自动添加结束符号。因此,在使用 Blob() 方法创建文本 Blob 对象时,需要确保字符串的结尾是一个合法的文本字符,以避免文本 Blob 对象被视为其他类型的 Blob 对象。

FileReader()

FileReader() 方法用于读取本地文件。FileReader 对象接受一个回调函数作为参数,该回调函数会在读取完成后被调用。我们可以使用 FileReader() 方法读取图片、音频和视频等文件:

const file = new File('image.jpg', 'image.jpg', {type: 'image/jpeg'});
const reader = new FileReader();
reader.onload = function(event) {
  const blob = event.target.result;
  const url = URL.createObjectURL(blob);
  const img = new Image(url);
  document.body.appendChild(img);
};
reader.readAsArrayBuffer(file);

FileReader() 方法不支持在 Web Workers 中读取文件,也不支持在加载页面时读取文件。

FileWriter()

FileWriter() 方法用于写入文件。FileWriter 对象接受一个回调函数作为参数,该回调函数会在写入完成后被调用。我们可以使用 FileWriter() 方法写入图片、音频和视频等文件:

const file = new File('image.jpg', 'image.jpg');
const writer = new FileWriter();
writer.onwriteend = function(event) {
  console.log('Write complete');
};
writer.write(file);

需要注意的是,File API 并不是完全的标准,因此在不同的浏览器中可能存在兼容性问题。此外,使用 File API 处理本地文件需要获取用户的访问权限,因此需要谨慎使用。

总结

今天就介绍这些基础的 File 处理方式,希望能对大家有所帮助。

标签:const,处理,前端,URL,Blob,File,new,方法
From: https://blog.51cto.com/bianchengsanmei/7516571

相关文章

  • 前端歌谣的刷题之路-第二十四题-阶乘
     前言我是歌谣我有个兄弟巅峰的时候排名c站总榜19叫前端小歌谣曾经我花了三年的时间创作了他现在我要用五年的时间超越他今天又是接近兄弟的一天人生难免坎坷大不了从头再来歌谣的意志是永恒的放弃很容易但是坚持一定很酷本题目源自于牛客网微信公众号前端小歌谣题目......
  • 前端远程调试方案 Chii 的使用经验分享
    前端远程调试方案Chii的使用经验分享Chii是与weinre一样的远程调试工具,主要是将webinspector替换为最新的chromedevtoolsfrontend监控列表页面可以看到网站的标题链接,IP,useragent,可以快速定位调试页面,监控页信息完善,支持https请求等,开发者工具能看到的都能看到。......
  • 关于`dial unix /var/run/docker.sock: connect: permission denied`的处理方法笔记
    之前遇到的一个问题,使用非root用户时操作docker提示无权限,在查阅了一些文章之后自己又摸索出了一些更方便的方法,顺手记录下来。一、问题发现根据报错信息dialunix/var/run/docker.sock:connect:permissiondenied,可以看出,是因为当前用户对docker使用的unixdomainsocket......
  • Python中捕获异常的方法及异常处理try-except-else-finally的区别
    在Python中,try、except、else和finally是我们常用的异常处理方式,有一个清晰的执行顺序很重要。在这篇攻略中,我们将详细探讨这些关键字的执行顺序,以便更有效地处理异常。先回顾一下这些关键字的含义和用途:try:执行可能会抛出异常的代码块;except:当try代码块中出现了异常,执行此代......
  • Vue之js循环方式、v-model 的使用、事件处理、表单控制、购物车案例、v-model修饰符
    js循环方式<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>js循环方式</title><scriptsrc="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.js"></sc......
  • 自定义异常类处理
    在编程过程中,异常是不避免的,为了是我们的代码更加可靠,我们需要学会如何处理异常。一下是自定义异常以及异常处理的一个小案例:#一.自定义异常类MyException类,测试当用户输入的数字大于90,raise主动抛出并处理该异常classMyException(Exception):def__init__(self,msg):......
  • Python3 ACM模式的输入输出处理
    python3ACM模式的输入输出例子教学_amc模式python读取输入_汀、人工智能的博客-CSDN博客Python的输入是字符串,所以要自己转类型strip去掉左右两端的空白符,返回strslipt把字符串按空白符拆开,返回[str]map把list里面的值映射到指定类型,返回[type]EOF用抓异常print后面加逗号......
  • 【Azure Batch】在中国区批处理服务(Mooncake Batch Account)上实验自动池(Auto Pool)
    问题描述在AzureBatch的介绍文档中,提出了自动池的概念,它可以在任务完成后,自动删除Pool资源,详细介绍:https://docs.azure.cn/zh-cn/batch/nodes-and-pools#autopools & https://learn.microsoft.com/zh-cn/rest/api/batchservice/job/add?tabs=HTTP#autopoolspecification自动池......
  • Webpack字体文件处理指南
    前言Webpack是一个现代的JavaScript应用程序打包工具,它可以帮助我们处理项目中的各种资源文件,包括字体文件。本篇博客将详细介绍如何使用Webpack来处理字体文件,并给出合理标题。为什么需要处理字体文件?在前端开发中,我们经常会使用各种字体文件来美化页面的显示效果。然而,如果不......
  • 前端模块化
     1.为什么需要模块化随着前端应用的日益复杂,我们的项目代码已经逐渐膨胀到了不得不花大量时间去管理的程度了。而模块化就是一种最主流的代码组织方式,它通过把复杂的代码按照功能的不同划分为不同的模块单独维护,从而提高开发效率、降低维护成本。模块化可以使你能够更容易地重......