截取某个div的图,以文件形式传给后端,并将后端返回的文件流下载为doc文件

<el-button type="default" @click="handleExport">导出</el-button>
<div id="chartsId" style="width:100px;height:100px;background:red;"></div>//这是一个echarts组件也可以,加上id即可
import html2canvas from "html2canvas";
// 导出
handleExport() {
  const divElement = document.getElementById("chartsId"); // 根据自己的情况修改ID
      html2canvas(divElement).then((canvas) => {
      this.convertToFile(canvas);
   });
},
convertToFile(canvas) {
   canvas.toBlob((blob) => {
       const formData = new FormData();
        formData.append("file", blob, ""); // 设置文件名及格式
        console.log("导出:", canvas);
        // 发送formData至后端处理
        axios({
          method: "post",
          url: process.env.VUE_APP_BASE_API + "/secure-api/nru/weekly/export", //此处为往后台发送请求的地址
          data: formData,
          headers: {
            "Content-Type": "multipart/form-data",
          },
          params: {
            ...this.query,
            sysCityCode: "370100000000",
            sysCountyCode: "",
          },
          responseType: "blob",//设置返回接受类型为blob
        })
          .then(async (res) => {
            const blob = new Blob([res.data]);
            const fileName = "导出文件.doc";
            if ("download" in document.createElement("a")) {
              // 非IE下载
              const dlink = document.createElement("a");
              dlink.download = fileName;
              dlink.style.display = "none";
              dlink.href = URL.createObjectURL(blob);
              document.body.appendChild(dlink);
              dlink.click();
              URL.revokeObjectURL(dlink.href); // 释放URL 对象
              document.body.removeChild(dlink);
            } else {
              // IE10+下载
              navigator.msSaveBlob(blob, fileName);
            }
          })
          .catch((error) => {
            console.error("无法上传图片:", error);
          });
      });
},
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值