利用blob对象于浏览器保存图片到本地

本文介绍了如何利用Blob对象的特性,通过fetch和URL.createObjectURL方法实现从网络异步下载图片并保存到本地。重点讲解了Blob对象的不可变性和高效处理大文件的能力。

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

本文提供一种保存图片到本地的实现方法(PC+H5都可以)
前置知识:
简介:Blob对象是一个表示大量不可变原始数据的容器。它主要用于处理二进制数据,如图片、音频、视频等文件。Blob 对象可以用于存储和操作大型数据集,例如文件或数据流。
使用场景:
从服务器获取二进制数据,如图片、音频或视频文件。
在客户端操作和处理二进制数据,例如通过 File API 读取用户上传的文件。
将二进制数据发送到服务器,例如通过 XMLHttpRequest 或 Fetch API 上传文件。
先实现代码:
Blob特点
不可变:Blob 对象的内容在创建后无法更改。如果需要修改 Blob 对象的内容,可以创建一个新的 Blob 对象。
高效:Blob 对象可以处理大型数据集,而不会消耗过多的内存。这是因为 Blob 对象在处理数据时,会将数据分块处理,而不是一次性加载整个数据集。
可以通过 URL 表示:可以使用 URL.createObjectURL() 方法为 Blob 对象创建一个 URL,以便在浏览器中引用和访问 Blob 对象。

    async saveImage(imageUrl) {
      try {
        const response = await fetch(imageUrl);
        const data = await response.blob();
        const url = URL.createObjectURL(data);
        const a = document.createElement("a");
        const event = new MouseEvent("click");
        a.download = "image";
        a.href = url;
        a.dispatchEvent(event);
      } catch (error) {
        console.error("保存图片失败:", error);
      }
    },

这里具体说明一下保存函数:async saveImage(imageUrl) :
该函数是一个异步函数,接受一个参数 imageUrl,表示图片的地址。使用 try 和 catch 处理错误。下载图片:使用 fetch(imageUrl) 下载图片,并将响应存储在 response 变量中。然后将响应转换为Blob格式,并将其存储在 data 变量中。
使用 URL.createObjectURL(data) 方法将二进制数据转换为临时 URL,并将其存储在 url 变量中。然后创建一个新的 a标签元素,并将其存储在 a 变量中。设置下载属性 a.download 为 “image”,表示下载的文件名为 “image”。将临时 URL 设置为 a标签元素的 href 属性。最后,创建一个新的 MouseEvent 对象,并将其存储在 event 变量中。使用 a.dispatchEvent(event) 触发点击事件,开始下载图片。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值