业务相关 - 文件上传、下载

132 阅读1分钟

创建一个文件数据 上传按键。 data为传进来的数据。在按键上触发 onClick事件调起此函数。

const exportJSON = (data: any, filename: string = "编排数据.json") => {
    if (!data) {
      Message.error("数据为空");
      return;
    }
    if (typeof data === "object") {
      data = JSON.stringify(data, undefined, 4);
    }
    let blob = new Blob([data], { type: "text/json" }),
      a = document.createElement("a");
    a.download = filename;
    a.href = window.URL.createObjectURL(blob);
    a.dataset.downloadurl = ["text/json", a.download, a.href].join(":");
    a.click();
  };

文件下载:假设一个get / post接口发送请求参数,后端处理请求参数后,在响应体中返回了blob文件流。在JS中创建下载:

// 注意:这种下载方法,可能会在线上网页被浏览器识别为“不安全的下载”
const downloadFile = (blob) => {
    // blob为后端响应回来的文件流数据
    const url = window.URL.createObjectURL(blob);
    const a = document.createElement("a");
    
    a.style.display = "none";
    a.href = url;
    a.download = "下载数据.xlsx";
    document.body.appendChild(a);
    a.click();
    
    window.URL.revokeObjectURL(a);
    document.body.remoteChild(a);
  };