vue实现下载文件和图片功能

2023-11-17

vue实现图片或文件下载功能

今天一个需求就是实现图片下载功能,刚开始以为很简单没有什么逻辑可写,就以为调用后端接口就可以了,调用之后发现有问 题,看来还是没有想象的那么简单

1、要自己创建一个a标签,以下就是下载功能的实现

这里是调用接口之后如果code=200时进行下载

if (res.code == 200) {
    const link = document.createElement("a"); //自己创建的a标签
    link.href = res.data;
    document.body.appendChild(link);
    link.click();
    document.body.removeChild(link);
    window.URL.revokeObjectURL(res.data);
  }

2、还有一种情况是下载单张图片,如果用上面方法会直接跳转到了图片链接,并不会实现下载。下面则是下载单张图片的方法

getUrlBase64(imgUrl) {
      return new Promise((resolve) => {
        let canvas = document.createElement("canvas");
        let ctx = canvas.getContext("2d");
        let img = new Image(); //允许进行跨域
        img.crossOrigin = "Anonymous";
        img.src = imgUrl;
        img.onload = function() {
          canvas.height = img.height; //图片的高度
          canvas.width = img.width;//图片的宽度
          ctx.drawImage(img, 0, 0, img.width, img.height);
          let dataURL = canvas.toDataURL("image/png");
          canvas = null;
          resolve(dataURL);
        };
      });
    },
    //点击下载图片按钮的事件
    handleDowondImg(url, name) {
      this.getUrlBase64(url).then((base64) => {
        const link = document.createElement("a");
        link.href = base64;
        link.download = this.$route.query.source;
        link.click();
      });
    },
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue实现下载文件和图片功能 的相关文章

  • 在生产中使用 css / javascript 源映射对性能有何影响?

    生产环境中应该使用源映射吗 除了调试之外 它们还有什么好处吗 由于额外的服务器往返 它们是否会影响应用程序加载时间 浏览器是否足够智能来加载 map应用程序加载和渲染后的资产 如果浏览器找不到 map asset 404错误 会对性能产生影
  • 如何在D3节点中放置图像?

    到目前为止 我已经创建了这些 D3 节点 用于创建可折叠的层次树 到目前为止 这些节点的颜色为 AA1C1C 深红色 以表明如果您单击它们 它们将扩展到更多节点 我想要做的是在节点中使用图像中的位置 这对于所有用户来说都是一个加号 以知道它
  • 添加数组的总和。显示1个输出

    更新 这个问题的答案如下 感谢在不同线程上进行的 dougtesting 将数组相加 显示总和 https stackoverflow com questions 45724641 add array together display su
  • HTML5 Audio Element 无法在 IOS 11 设备上的 safari 中播放 mp3 直播

    我是一家广播公司的网络开发人员 自 iOS 11 发布以来 我们收到了一些用户投诉 称我们的音频直播流无法再在 IOS 11 设备上播放 为了将流嵌入我们的网站 我们使用 HTML5 AudioElement 在 iOS 11 的 iPho
  • 一个输入字段,多个名称

    在 HTML 表单中 如何从一个输入字段获取两个姓名 是否可以通过隐藏的输入字段 如何 我试图使隐藏字段值动态等于非隐藏字段值 这样无论用户写什么 它们都相等 但我确信它不起作用 而不是像这样的东西是否会起作用工作 Here http ww
  • 在 forEach() 中使用 `this` [重复]

    这个问题在这里已经有答案了 免责声明 我正在学习 JavaScript 我有一个像这样的对象构造函数 var Palette function this colors red green blue this getColorCombinat
  • 如何查明在 Chrome 控制台中按下按钮时会调用哪些函数?

    我正在尝试自学 Google Closure javascript 库 我正在检查 TreeControl UI 小部件 如何使用Chrome控制台分析当我点击下面演示中的 剪切 按钮时运行了哪些功能 例如 我可以为此设置一个断点吗 我尝试
  • PHP:在执行 php 脚本时显示“正在加载”页面

    这就是我现在所拥有的 我有一个网页 当访问该网页时 它会通过开放 API 连接到 Surveygizmo com 检索大量数据 然后将这些数据返回给我进行处理 此过程大约需要 10 12 秒 在执行时 页面只是处于 正在加载 状态 并且我会
  • AngularJS 与(Angular JS + jQuery)

    我有一个关于仅使用 AngularJS 和纯 JavaScript 以及使用 AngularJS 和 jQuery 时的性能问题 ex app directive fitHeight function window return restr
  • 如何隔离 Vuetify 全局样式

    我已经开始在旧的现有项目中将 Vue js 与 Vuetify 结合使用 所以我没有重写所有前端 我只是导入了Vue并替换了一些部分 然后我注意到一个非常意想不到的行为 Vuetify 具有常见类的全局样式 例如 title它不仅影响整个页
  • LINQ SingleOrDefault() 等效项

    在 Typescript 中 我经常使用这种模式 class Vegetable constructor public id number public name string var vegetable array new Array
  • 使用 System.js 导入 Typescript 编译的模块时出错

    我最近正在学习使用 system js 导入由 Typescript 编译的模块 这些模块之前是为 require js 编译的 并且工作正常 但是合并到system js时 应用时无法导入模块系统生产 js 控制台说 Uncaught i
  • 内部样式表中的 HTML 注释标签[重复]

    这个问题在这里已经有答案了 可能的重复 注释掉 HTML 文档中的样式表以支持旧版浏览器 https stackoverflow com questions 6825773 commenting out stylesheets in htm
  • 如何在纯 HTML 页面中返回特定的 HTTP 状态代码

    Google 建议当网站暂时不可用时返回 503 HTTP 响应 我有一些纯 HTML 网站 如何在纯 HTML 网站中返回 503 状态 我使用的是带有 Apache 的 Linux 机器 您必须在服务器上而不是在 HTML 文件中设置状
  • 在 Nest.js 中发送之前如何格式化响应?

    我按照文档进行操作 并能够添加用于响应映射的拦截器 我想要一致的 json 格式输出作为响应 我怎样才能用拦截器或其他比这种方法更好的方法来实现这一点 statusCode 201 message Custom Dynamic Messag
  • 如何使 CSS 动画/过渡以固定速度而不是固定持续时间播放? [复制]

    这个问题在这里已经有答案了 我有一个 CSS 动画 可以使元素沿直线移动未定义的距离 据我所知 动画具有固定的持续时间 因此无论元素必须移动多远 动画始终需要相同的时间来运行 我该如何制作才能使动画没有固定的duration 但有固定的运动
  • iPad 上的网站纵向视图

    我的网站在 iPad 纵向模式下无法正确显示 它在横向模式下看起来不错 但当我将其转换为纵向模式时 我最终会得到一个混乱的网站 所有元素都分散在整个网站上 我怎样才能解决这个问题 请帮我 这是我网站的链接 inclouds co uk ht
  • 显示对象内容 - JS/jQuery

    With this data events 返回 object Object 我需要看看里面到底发生了什么 我找到了这个 var Finder each this data events function i n Finder Name i
  • TypeScript 中 C# 类虚拟成员的等效项

    因此 在 C 中 当我创建模型类和延迟加载内容时 我会执行以下操作 public int User ID get set public int Dept ID get set 然后在我的班级稍远一点的地方 我像这样弹出我的虚拟 public
  • 获取css规则、chrome扩展

    我正在开发 Chrome 扩展程序 它需要访问document styleSheets cssRules 它在某些网站上运行良好 例如w3school 但其他人则不然 比如堆栈溢出 我收到错误 Failed to read the cssR

随机推荐

  • obsidian memos插件iphone端无法读取memos

    首先看periodic或者daily插件有没有问题 其次看dateview插件是否达到要求的0 5 9以上 如果是手机端不行但电脑端可以的话一般来说插件配置是没问题的 除非手机app有哪里不兼容 都没有问题的话可能是 memos插件在手机上
  • CMake中cmake_minimum_required的使用

    CMake中的命令cmake minimum required用于设定需要的最低版本的CMake 其格式如下 cmake minimum required VERSION
  • 与窗口大小无关的图像滤波算法

    问题 一幅24位彩色图像 其上有一些红色区域 这些区域都是相连的 为了将图像中红色且相连的部分分离出来 使用如下算法 对单个像素进行判断 若满足R 10 gt G且R 10 gt B 那么就认为该像素呈红色 因为图像原因 可能在某个位置孤立
  • spingboot+layui+poi实现excel导入功能,并批量插入数据库

    1 maven的pom文件添加下面jar包
  • 堆(Heap-线程共享)-运行时数据区

    是被线程共享的一块内存区域 创建的对象和数组都保存在 Java 堆内存中 也是垃圾收集器进行 垃圾收集的最重要的内存区域 由于现代VM采用分代收集算法 因此Java堆从GC的角度还可以 细分为 新生代 Eden 区 From Survivo
  • 2023深圳杯C题

    专栏内已发布ABCD篇 论文 思路 代码 只需订阅一次 目录 无人机协同避障航迹规划 摘要 一 问题重述 1 1 背景
  • 10分钟搞懂遗传算法

    大自然有种神奇的力量 它能够将优良的基因保留下来 从而进化出更加强大 更加适合生存的基因 遗传算法便基于达尔文的进化论 模拟了自然选择 物竞天择 适者生存 通过N代的遗传 变异 交叉 复制 进化出问题的最优解 遗传算法看似神奇 但实现思路却
  • ERROR 1045 (28000): Access denied for user ‘ODBC‘@‘localhost‘ (using password: NO)

    ERROR 1045 28000 Access denied for user ODBC localhost using password NO 这个问题是由于密码错误导致的 一般是要重置密码 可以修改my ini配置文件 1 用记事本打开
  • C语言中数组名和&数组名的区别

    C语言中数组名和 数组名的区别 include
  • 迁移学习源码全注释 - 《Tensorflow 实战 Google 深度学习框架》源码注释

    学习迁移学习源码 做了完全版本注释 以做记录 coding utf 8 Created on Mon Dec 25 12 30 25 2017 需要提前下载训练好的 Inception V3模型 以及对应的数据文件 author Admin
  • Linux - CentOS 6 安装 JDK

    安装步骤如下 1 下载jdk1 7 0 55 jdk 7u55 linux i586 tar gz 2 卸载系统自带的开源JDK 查看是否安装JDK rpm qa grep java 显示如下信息 存在 执行下面代码删除 rpm e jav
  • 智能营销增益模型(Uplift Modeling)实践整理

    一 uplift 思想 因果推断 常用的点击率预测模型 称为响应模型 response model 即预测用户看到商品 Treatment 后点击 购买 的概率 但在营销的发放优惠券这种场景下 很自然会想到 用户是本来就有购买的意愿还是因为
  • Java代码写好后怎么运行?

    对于很多Java初学者来说 编写好自己的第一个程序能够运行起来是一件非常自豪的事情 那么你知道应该如何才能运行Java代码吗 今天小千就来给大家介绍一下 Java代码运行方法 1 首先需要确保你的电脑正确安装了Java环境并且环境变量都配置
  • 设计模式的六大原则

    目的 高内聚 低耦合 基于 对接口编程而不是对实现编程 优先使用对象组合而不是继承 1 开闭原则 Open Close Principle 开闭原则的意思是 对扩展开放 对修改关闭 在程序需要进行拓展的时候 不能去修改原有的代码 实现一个热
  • STM32 PWM捕获方式:两种思想

    一 利用系统自带PWM捕获 1 代码 初始化 c include capture h include stm32f10x h void Capture Init PA7 gt TIM3 CH2 GPIO InitTypeDef GPIO I
  • springboot性能优化

    SpringBoot性能调优有三种方案 SpringBoot 是一个快速开发框架 能够快速的整合第三方框架 简化XML配置 全部采用注解形式 内置Tomcat容器 帮助开发者能够实现快速开发 SpringBoot的Web组件 默认集成的是S
  • 软件测试:白盒测试

    一 定义 白盒测试又称结构测试 透明盒测试 逻辑驱动测试或基于代码的测试 白盒测试是一种测试用例设计方法 盒子指的是被测试的软件 白盒指的是盒子是可视的 白盒 法全面了解程序内部逻辑结构 对所有逻辑路径进行测试 白盒 法是穷举路径测试 在使
  • webpack5搭建vue环境

    webpack5搭建vue环境 0 前言 安装 webpack webpack cli 开始我是全局安装进行测试 后期项目中最好用局部安装 不同项目使用的版本不同 熟悉 npm基本命令确保npm可以使用 1 webpack概念 中文官网 h
  • SQL语句的MINUS,INTERSECT和UNION ALL

    SQL语句中的三个关键字 MINUS 减去 INTERSECT 交集 和UNION ALL 并集 关于集合的概念 中学都应该学过 就不多说了 这三个关键字主要是对数据库的查询结果进行操作 正如其中文含义一样 两个查询 MINUS是从第一个查
  • vue实现下载文件和图片功能

    vue实现图片或文件下载功能 今天一个需求就是实现图片下载功能 刚开始以为很简单没有什么逻辑可写 就以为调用后端接口就可以了 调用之后发现有问 题 看来还是没有想象的那么简单 1 要自己创建一个a标签 以下就是下载功能的实现 这里是调用接口