Angular 文件上传与下载


文件上传

方式1 使用NG ZORRO中的组件。


文件下载

方式1 直接下载

已知明确的下载链接,可以直接进行下载。

<a href="downloadUrl" download="fileName">下载</a>

方式2 通过HTTP请求后端数据的方式进行下载

在Angular中使用HttpClientPOST请求处理文件响应数据。

   /**
   * 文件下载
   * @param url 下载URL,【该URL需要加入到拦截器的白名单中】
   * @param savedName 存储在本地的文件名称加后缀
   * @param paramsObj 接口参数对象
   * @param successCallback 下载成功的回调函数
   * @param errorCallback 下载出错的回调函数
   */
  downloadFile(url: string, savedName: string, paramsObj: object, successCallback, errorCallback) {
    const params = {
      ...paramsObj
    };
    for (const key in params) {
      if (params[key] === '' || params[key] === null || params[key] === undefined) {
        delete params[key];
      }
    }
    this.http.post(this.url + url, params, {
      responseType: 'blob',
      headers: new HttpHeaders({
        'Content-Type': 'application/json',
      }),
    }).subscribe((result) => {
      const contentType = 'application/octet-stream;charset=UTF-8';
      const blob = new Blob([result], { type: contentType });
      // 创建一个URL对象
      const objectURL = window.URL.createObjectURL(blob);
      const a = document.createElement('a');
      a.href = objectURL;
      a.download = savedName; // 此处的savedName为保存到本地的文件名称及后缀
      a.click();
      // 释放已创建的URL对象
      window.URL.revokeObjectURL(objectURL);
      successCallback();
    }, (error) => {
      errorCallback(error);
    });
  }


示例:


  exportExcel() {
    const savedFileName = '表格测试' + '.xls';
    const params = {
      // 参数信息
    };
    const successCallback = () => { // 成功回调
      // other code for success
    };
    const errorCallback = () => { // 失败回调
      // other code for fail
    };
    this.service.downloadFile('测试url', savedFileName, params, successCallback, errorCallback);
  }



— END —

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值