【前端】JavaScript 实现下载图片但不自动预览图片

简介: 【前端】JavaScript 实现下载图片但不自动预览图片

前言


之前完成过一个需求:“JavaScript 实现导出网页中的一个模块为一张图片”。

当时是通过 canvas 实现的,导出图片的效果也非常好,是我们客户在举办线下会议时做广告机的广告图用的。一张广告图可能很好做,美工手动完成一下也不费劲,但如果广告图里的数据全部来自数据库,图片也存在网络上呢?(我要解决的就是这个问题,根据动态数据实现网页自动排版并导出图片)


正文


进入正题:


今天同样是在做一个图片下载功能,其实代码很少,

let eleA = document.createElement('a')
 eleA.href = "https://test.com/test.jpg"
 eleA.download = "test.jpg"
 eleA.click()


就是创建一个 a 标签,然后设置 href 属性,然后设置 download 属性,最后点击。

可惜,最后效果不如愿,因为在谷歌浏览器里,它老师新开一个页面,直接预览图片。我需要做的是下载到本地,并保存成我设置的名字。


解决方案重点来了

let resp = await fetch( "https://test.com/test.jpg").catch(e => {
     console.error(e)
 })
 if (!resp) {
     return
 }
 let eleA = document.createElement('a')
 let blob = await resp.blob().catch(e => {
     console.log(e)
 })
if(!blob) {
        return
}
 eleA.href = URL.createObjectURL(blob)
 eleA.download = "test.jpg"
 eleA.click()


步骤基本不变,变化的地方在于 href 属性的设置,这里是先通过 fetch 下载数据到本地,然后使用 URL.createObjectURL(blob) 作为 href 属性的值。


URL.createObjectURL() 静态方法会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象。


新的代码,可以实现下载图片但不自动预览图片了,完事。


**PS:最开始说的那个需求里,实际上已经做到了不自动预览图片,但那里的图片源是来自 canvas,和这里的图片链接不大一样。

目录
相关文章
|
1月前
|
JavaScript 前端开发
vue前端下载,实现点击按钮弹出本地窗口,选择自定义保存路径
这个不用代码实现(网上也找不到方法可以调出另存为窗口),更改浏览器设置就可以,否则,现在的浏览器都是默认直接保存到下载路径中
57 3
|
1月前
|
前端开发
前端接受后端文件流并下载到本地的方法
前端接受后端文件流并下载到本地的方法
56 0
|
1月前
|
JavaScript 前端开发 API
js截取图片地址后面的参数和在路径中截取文件名或后缀名
在处理网页上的图片资源或者其他类型的文件资源时,你可能会遇到需要使用这些技巧的情况。以下是一些具体的使用场景:
15 0
|
1月前
|
前端开发 JavaScript UED
前端开发的魔法:CSS动画与JavaScript的完美结合
本文将探讨如何利用CSS动画和JavaScript的结合,为前端页面增添生动的效果。我们将通过实例展示如何使用这两种技术为网页元素创建吸引人的动画效果,并讨论它们的优缺点和适用场景。
27 0
|
1月前
|
机器学习/深度学习 人工智能 前端开发
【前端】JavaScript简介
【前端】JavaScript简介
17 0
|
1月前
|
JavaScript
js判断图片是否加载完成
js判断图片是否加载完成
24 0
|
1月前
|
前端开发
前端实现生成pdf文件并下载
前端实现生成pdf文件并下载
35 1
|
1月前
|
前端开发
前端实现视频或者图片直链下载
前端实现视频或者图片直链下载
55 0
|
1月前
|
Rust 前端开发 JavaScript
前端技术的未来:WebAssembly与JavaScript的融合之路
【2月更文挑战第12天】本文旨在探讨WebAssembly(以下简称Wasm)与JavaScript(以下简称JS)的结合如何为前端开发带来革命性变化。传统上,JS一直是前端开发的核心,但随着Wasm的出现,我们看到了前端性能和功能的新天地。文章首先介绍Wasm的基本概念,然后分析其对前端开发的影响,包括性能提升、新功能实现以及开发模式的变化。最后,探讨了Wasm与JS融合的未来趋势,以及这种融合如何推动前端技术的进步。
|
1月前
|
Rust 前端开发 JavaScript
探索前端技术的未来:WebAssembly与JavaScript的融合之路
【2月更文挑战第12天】 随着Web技术的不断进步,前端开发正迎来一场革命性变革。本文将深入探讨WebAssembly(以下简称Wasm)与JavaScript(以下简称JS)的结合如何为前端开发带来前所未有的性能提升与新的编程模式。我们将从两者的基本概念入手,探索它们各自的优势与局限,然后深入分析Wasm和JS协同工作时能够解锁的潜力,最后展望这一技术趋势如何塑造未来的前端开发生态。本文旨在为前端开发者提供洞见,帮助他们理解并准备好迎接这一即将到来的技术浪潮。