js-前端-1.下载文件ppt,word,xls,txt时候可以改名字2.下载图片-(全部代码)

14 篇文章 0 订阅
11 篇文章 2 订阅

参考文章

页面效果:

html

<a v-if="isPicture(record.extension)" href="javascript:;"@click="dowload(urls + record.filePath, record.name, 1)"><a-icon type="download" />
      <span class="icon-addmargin">下载</span></a>
     <a v-else @click="dowload(urls + record.filePath, record.name, 2)">
     <a-icon type="download" /><span class="icon-addmargin">下载</span></a>

js

 // vue文件下载js
    dowload(imgsrc, name, type) {
      if (type == 1) {
        if (!imgsrc) {
          return;
        }
        downImage(imgsrc, name);
      } else {
        downloadFile(imgsrc, name);
      }
    },

//引入js文件代码
// 文件下载ppt,xls,word
export function downloadFile(str, fileName) {
  let that = this;
  getBlob(str, function (blob) {
    saveAs(blob, fileName);
  });
  function getBlob(url, cb) {
    console.log("调用getBlob");
    var xhr = new XMLHttpRequest();
    xhr.open("GET", url, true);
    xhr.responseType = "blob";
    xhr.onload = function () {
      if (xhr.status === 200) {
        cb(xhr.response);
      }
    };
    xhr.send();
  }
  function saveAs(blob, filename) {
    console.log("调用saveAs");
    if (window.navigator.msSaveOrOpenBlob) {
      navigator.msSaveBlob(blob, filename);
    } else {
      var link = document.createElement("a");
      var body = document.querySelector("body");
      link.href = window.URL.createObjectURL(blob);
      link.download = filename;
      link.style.display = "none";
      body.appendChild(link);
      link.click();
      body.removeChild(link);
      window.URL.revokeObjectURL(link.href);
    }
  }
}
// url下载文件图片
export function downImage(src, name) {
  getUrlBase64(src).then((base64) => {
    let a = document.createElement("a");
    a.style.display = "none";
    a.download = name;
    a.href = base64;
    document.body.appendChild(a);
    a.click();
  });
}
function getUrlBase64(url) {
  return new Promise((resolve) => {
    let canvas = document.createElement("canvas");
    let ctx = canvas.getContext("2d");
    let img = new Image();
    img.crossOrigin = "Anonymous"; //允许跨域
    img.src = url;
    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);
    };
  });
}

总结:代码网上都有很多人分享代码,从网上拉取代码的关键不在于复制别人的代码,解决自己的问题。今天看了文章最上面推荐的文章,看到了方法一另一个方法为参数的使用方式,我觉得真的是见识到了代码的精妙,看好的代码是学习和享受的过程!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值