uniapp文件下載


uni.downloadFile({
  //只能是GET請求
  url: base.baseUrl + `/electricStation/exportData?siteId=1&startTime=${e[0]}&endTime=${e[1]}`, //請求地址
  header: {
    Authorization: 'Bearer ' + uni.getStorageSync('SET_TOKEN') //請求頭。
  },
  success: res => {
  //下載成功
  if (res.statusCode === 200) {
    var sFilePath = res.tempFilePath;
    //保存文件
    uni.saveFile({
      tempFilePath: res.tempFilePath, //下載成功之后返回的臨時路徑
      success: e => {
        console.log(e);
        var savedFilePath = e.savedFilePath;

        //解決下載返回文件名和保存文件名不一致問題
        this.fSetFileName(e.savedFilePath, sFilePath);
      },
      fail: e => {
        uni.showToast({
          title: `保存失敗` + e
        });
      }
     });
    }
  },
  fail: e => {
    uni.showToast({
      title: `文件下載失敗` + e,
      icon: 'none'
    });
  }
});

 

fSetFileName(sFilePath, sFileName) {
  var sFileName = sFileName.split('/')[sFileName.split('/').length - 1]; //原來的文件名
  var aFileUrl = sFilePath.split('/').splice(0, sFilePath.split('/').length - 1); //saveFile API保存的本地地址
  var url = base.baseUrl + `/electricStation/exportData?siteId=1&startTime=${this.range[0]}&endTime=${this.range[1]}`; //請求地址
  let dtask = plus.downloader.createDownload(
    url,
    {
      filename: 'file://' + aFileUrl.join('/') + '/' + sFileName //利用保存路徑,實現文件的重命名
    },
    (d, status) => {
      if (status == 200) {
        let fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);
        this.fGetSavedFileList();

        uni.openDocument({
          filePath: fileSaveUrl,
          fail: e => {
            uni.showToast({
              title: `打開失敗` + e
            });
          }
        });
      } else {
        //下載失敗
        plus.downloader.clear(); //清除下載任務
      }
    }
  );
  dtask.setRequestHeader('Authorization', 'Bearer ' + uni.getStorageSync('SET_TOKEN'));
  dtask.start();
},

// 獲取已下載列表
fGetSavedFileList() {
  uni.getSavedFileList({
    success: res => {
      res.fileList.forEach(oData => {
        let aRray = oData.filePath.split('/');
        let sFileName = aRray[aRray.length - 1].split('.')[0];
        if (parseFloat(sFileName).toString() == 'NaN') {
          //這里是過濾掉文件名是時間戳的文件
          console.log(res.fileList);
        } else {
          //這里是把時間戳的文件刪掉
          plus.io.resolveLocalFileSystemURL(oData.filePath, entry => {
            //獲取文件對象
            entry.remove(
              entry => {
                plus.console.log('Remove succeeded');
               },
              e => {
                alert(e.message);
              }
            );
          });
        }
      });
    }
  });
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM