利用 a 标签 实现 下载图片(不是打开)的正确姿势
1. 场景再现
- 当 a 标签中添加了 download 属性,想要实现下载图片时:
- 点击 a 链接,没有进行下载,而是在 当前页面 打开了图片
2. 原因
- <a> 有 download 属性,可以实现下载 同源文件( ip 和 端口 相同)
- 当图片 不同源 时,点击下载,会在当前窗口直接打开图片,而不是进入下载状态
3. 解决方案(两种)
3.1 使用 target 属性,打开新页面进行下载
- 这样可以维持当前页面状态,用户需要在新页面中保存图片
3.2 写一个点击事件,通过 canvas 方式 保存图片
<script>/*** 下载图片* @param {string} imgsrc 图片地址*/downloadIamge(imgsrc) {// 新建图片对象let image = new Image();// 解决跨域 Canvas 污染问题image.setAttribute("crossOrigin", "anonymous");// 图片加载image.onload = function() {// 新建 canvas标签let canvas = document.createElement("canvas");// 设置 canvas宽高canvas.width = image.width;canvas.height = image.height;// 添加 canvas画笔let context = canvas.getContext("2d");// 绘制图片context.drawImage(image, 0, 0, image.width, image.height);// 得到图片的 base64 编码let url = canvas.toDataURL("image/png");// 新建 a标签let a = document.createElement("a");// 新建点击事件let event = new MouseEvent("click");// 将图片的 base64 编码,设置为 a标签的地址a.href = url;// 触发点击事件a.dispatchEvent(event);};// 将图片地址 设置为 传入的参数 imgsrcimage.src = imgsrc;};/*** 下载方法* @param {string} filepath 文件地址*/downloads(filepath) {// isImageFile():自定义函数,根据*后缀*判断是否是图片if (isImageFile(filepath)){this.downloadIamge(filepath)} else {this.downloadFile(filepath)}}; </script>
利用 a 标签 实现 下载图片(不是打开)的正确姿势相关推荐
- 第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签...
第三百二十五节,web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签 标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象 ...
- html利用a标签实现下载本地的文件
在写html页面的时候,需要在网页上提供一个下载按钮可以下载我自己电脑中的文件.我已经知道了该文件的路径,但是之前看了很多文章都没找到正确办法,一直不知道如何能够下载本地的文件,经过不断实验发现,可以 ...
- 在html使用a标签 直接下载图片 不通过后台实现直接下载
由于a标签在HTML中链接图片会被识别并打开到网页上 如果想下载这个图片的话 就需要连接到后台读取文件并生成一个头信息下载.不过可以先给a标签加上一个download属性即可直接下载了. <a ...
- 通过a标签直接下载图片或文本文档
a标签直接下载文件如果遇到图片或文本文档则默认会直接打开,而不是下载,可以 <a href="/uploadfolder/xxxx.txt" download="文 ...
- web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签
标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象 需要导入模块:from scrapy.selector import HtmlXP ...
- 4、web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签
标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象 需要导入模块:from scrapy.selector import HtmlXP ...
- 四 web爬虫,scrapy模块标签选择器下载图片,以及正则匹配标签
标签选择器对象 HtmlXPathSelector()创建标签选择器对象,参数接收response回调的html对象 需要导入模块:from scrapy.selector import HtmlXP ...
- java 点击a标签下载文档_使用a标签进行下载excel文件,打开下载后的文件内容为空,这是为什么?...
前端代码:下载 后端代码: 接口:@ApiOperation(value = "下载") @GetMapping("/down") public void do ...
- 前端开发:a标签实现下载功能
应用背景 前端项目实现下载文件的功能,在后台没给我们撸接口的情况下,我们可以利用a标签实现下载功能,而且贼简单~ 实现原理 通过a标签的download的属性,将需要下载的文件放在前端项目中,然后hr ...
最新文章
- python打印指定行数的分割线_在Python中的分隔线上打印列表元素
- 数据结构C语言版之查找(折半选择快速等)
- MySQL InnoDB 锁表与锁行
- 用Java创建自己的AOP
- 西北大学计算机科学排名,西北大学计算机科学与信息系统Computer Science and Information Systems世界排名2020年最新排名第151-200位(QS世界排名)...
- 流式处理和批处理的区别
- Spark: Structured + hive(Jdbc方式)卡死
- 今日恐慌与贪婪指数为72 贪婪程度有所缓解
- zabbix 调用api 批量删除主机
- Eclipse创建子包时显示与父包是并列关系的解决方法
- 香烟logo设计灵感 - logo设计公司 - ci设计
- 达内微软mta证书有用吗_微软MTA认证含金量极高 同程同美引入MTA考试认证倍受关注...
- java图像处理-(指定区域内)灰度化、透明化(alpha通道)处理
- 高等数学笔记-乐经良老师-第五章-积分(Ⅱ)-定积分的应用-第六节-定积分的应用
- 抖音创意拍摄玩法让你轻松上热门,抖音分身特效教程。
- 2022最新中高阶Android面试题总结,Android面试题库
- android 京东收货地址,手机京东商城怎么添加收货地址?
- Vivado关于综合(Synthesis)后存在Hold时序违例(Hold<0),但实现(Implementation)后无时序违例(hold>= 0)的问题
- matlab示波器图形保存,MATLAB中示波器数据的绘图与保存
- 主成分分析碎石图_选取公共因子时 碎石图怎么看
热门文章
- android学习十八(Service服务的基本用法)
- kelvin模型蠕变方程_基于改进Kelvin模型的三维蠕变损伤模型研究
- ZCMU--5193: 韩信点兵(C语言)
- 爬虫爬取糗事百科图片数据
- STM32H7系列其一
- Ubuntu16.04配置orb_slam2环境,orb_slam的单目数据集,单目实时运行,RGB-D数据集的运行
- [人工智能-综述-5]:人工智能课程学习的10大基本问题与学习方法的建议
- Ubuntu16.04设置root密码
- 力扣 779. 第K个语法符号
- 2020.8.3【算协集训】线性dp