上传下载导出功能

188 阅读1分钟

一.导出为图片

1.引入html2Canvas

import html2Canvas from 'html2canvas';

2.导出的方法

   exportImg(DivID){
       html2Canvas(this.$refs[DivID]).then(canvas => {
        let dataURL = canvas.toDataURL("image/png");
        if (dataURL !== "") {
            var a = document.createElement('a')
            a.download = "导出的图片名";
            a.href = dataURL;
            a.click()
        }
      })
    },

3.导出按钮

    <el-button @click="exportImg('rmcl-analysis')">导出</el-button>

4.需要导出的页面

 <div class="rmcl-analysis" ref="rmcl-analysis">
 </div>

二、点击文字链接下载

1.不可修改文件名

window.open('链接')

2.可修改文件名

import { getFileDownloadUrl } from "@/_public/utils/index";
...下为utils/index封装的拼链接的方法...
当返回的url为此种类型时 ,需拼完整url  ""group1/M00/01/ED/CsA1T2Jft7yAB5rUUAFdIctY61.xlsx""
export function getFileDownloadUrl(url) {
  return window.location.origin + window.SITE_CONFIG.proxyName + '/' + url
}
downloadfile(row) {
      let fileUrl = getFileDownloadUrl(row.fileName);
      let fileName = row.attachmentName
      let element = document.createElement('a');
      element.style.display = 'none';
      element.setAttribute('href', fileUrl);
      element.setAttribute('download', fileName);
      document.body.appendChild(element);
      element.click();
      document.body.removeChild(element);
    },

三.上传附件

    //上传之前判断文件大小,以及文件格式是否正确
    beforeUpload(file) {
      console.log(file);
      if (file.type != "" || file.type != null || file.type != undefined) {
        const FileExt = file.name.replace(/.+\./, "").toLowerCase();
        console.log(FileExt);
        const isLt5M = file.size / 1024 / 1024 < 50; //这里做文件大小限制
        if (!isLt5M) {
          this.upFormVisible = false;
          this.$message({
            type: "warning",
            message: "上传文件大小不能超过 50MB!"
          });
          return false;
        }
        if (this.fileType.includes(FileExt)) {
          return true;
        } else {
          this.upFormVisible = false;
          this.$message({ type: "warning", message: "上传文件格式不正确!" });
          return false;
        }
      }
    },
  //上传文件接口
    uploadFile(item) {
      let FormDatas = new FormData();
      FormDatas.append("file", item.file);
      axios({
        method: "post",
        url: `/epdp/air/air-jp-import-record/import-data/${this.form.constructionSite}`,
        headers: this.headers,
        timeout: 30000,
        data: FormDatas
      }).then(res => {
        this.$set(this.form, "fileName", res.data.result);
      });
    },