Vue 图片下载功能

又做了一个图片下载的功能,下面是代码

 download(row) {
      this.id = row.id;
      const id = this.id;
      fetch("URL", {      // 这里写下载请求的URL地址 
        method: "GET",
        headers: {
          "Content-Type": "application/json",
        },
        params: {
          id: id,
        },
      })
        .then((response) => response.blob())
        .then((blob) => {
          const url = URL.createObjectURL(blob);
          const a = document.createElement("a");
          a.href = url;
          a.download = "query_result.json";
          a.click();
          URL.revokeObjectURL(url);
        })
        .catch((error) => console.error("下载失败", error));
    },
<template slot-scope="scope">
    <el-button size="mini" type="text" icon="el-icon-edit" @click="download(scope.row)">下载</el-button>
<template>
  1. 将传入的row.id赋值给本地变量idthis.id,以确保在请求发送后id的值不会改变。

  2. 使用Fetch API发送GET请求到你的URL地址,并设置请求头的Content-Typeapplication/jsonparams字段在Fetch API中无效,你需要将id作为查询参数拼接在URL中。

  3. 在链式调用中,首先将响应转换为Blob对象。

  4. 将Blob数据转换为URL链接。

  5. 创建一个a标签,并设置链接(href)和下载(download)属性。

  6. 将a标签添加到文档中。

  7. 调用a.click()模拟点击a标签,从而触发文件下载。

  8. 最后通过URL.revokeObjectURL(url)释放URL对象,避免内存泄漏。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue3中使用TypeScript实现下载图片的功能可以按照以下步骤进行: 1. 首先,确保你的Vue项目已经安装了vue-router和vuex,并且已经创建了一个App.vue组件和一个名为App的实例。 2. 在src/main.ts文件中,引入vue-router、vuex和创建的App组件,然后使用createApp函数创建Vue应用,并通过.use()方法来使用router和store。 3. 在App.vue组件中,添加一个按钮来触发下载图片的功能,并绑定一个点击事件。 4. 在按钮的点击事件处理函数中,使用HTMLCanvasElement的getContext()方法来获取一个2D绘图上下文,并设置画布的宽度和高度。 5. 使用绘图上下文的drawImage()方法将要下载的图片绘制到画布上。 6. 使用HTMLCanvasElement的toDataURL()方法将画布内容转换为DataURL字符串。 7. 创建一个a标签元素,并设置其href属性为DataURL字符串。 8. 设置a标签的download属性为要保存的文件名。 9. 使用a标签的click()方法触发点击事件,从而下载图片。 10. 最后,在App.vue组件中,将下载图片的功能添加到模板中的按钮中,并测试功能是否正常工作。 总结一下,实现Vue3中使用TypeScript下载图片的功能,你需要在App.vue组件中添加一个按钮,并在按钮的点击事件处理函数中使用Canvas绘制图片,并使用a标签下载绘制的图片。以上是一个简单的步骤,你可以根据你的具体需求进行相应的调整和优化。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [vue3+ts实现给图片增加水印-自定义指令](https://blog.csdn.net/weixin_45730243/article/details/127689936)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [vue3+ts项目采用canvas模拟批注功能](https://blog.csdn.net/LuoYi_ly_/article/details/128255556)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值