1. 程式人生 > >uni-app 下載檔案(四)

uni-app 下載檔案(四)

下載檔案資源到本地,客戶端直接發起一個 HTTP GET 請求,返回檔案的本地臨時路徑。

OBJECT 引數說明

引數名 型別 必填 說明
url String 下載資源的 url
header Object HTTP 請求 Header, header 中不能設定 Referer
success Function 下載成功後以 tempFilePath 的形式傳給頁面,res = {tempFilePath: '檔案的臨時路徑'}
fail Function 介面呼叫失敗的回撥函式
complete Function 介面呼叫結束的回撥函式(呼叫成功、失敗都會執行)

注:檔案的臨時路徑,在應用本次啟動期間可以正常使用,如需持久儲存,需在主動呼叫 uni.saveFile,才能在應用下次啟動時訪問得到。

success 返回引數說明

引數 型別 說明
tempFilePath String 臨時檔案路徑,下載後的檔案會儲存到一個臨時檔案
statusCode Number 開發者伺服器返回的 HTTP 狀態碼

示例

uni.downloadFile({
    url: 'https://www.example.com/file/test', //僅為示例,並非真實的資源
    success: function (res) {
        if (res.statusCode === 200) {
            console.log('下載成功');
        }
    }
});

返回值

返回一個 downloadTask 物件,通過 downloadTask,可監聽上傳進度變化事件,以及取消上傳任務。

downloadTask 物件的方法列表

方法 引數 說明 最低版本
onProgressUpdate callback 監聽下載進度變化 *
abort 中斷下載任務 *

onProgressUpdate 返回引數說明

引數 型別 說明
progress Number 下載進度百分比
totalBytesWritten Number 已經下載的資料長度,單位 Bytes
totalBytesExpectedToWrite Number 預期需要下載的資料總長度,單位 Bytes

示例

const downloadTask = uni.downloadFile({
    url: 'http://www.example.com/file/test', //僅為示例,並非真實的資源
    success: function (res) {
        if (res.statusCode === 200) {
            console.log('下載成功');
        }
    }
});

downloadTask.onProgressUpdate(function (res) {
    console.log('下載進度' + res.progress);
    console.log('已經下載的資料長度' + res.totalBytesWritten);
    console.log('預期需要下載的資料總長度' + res.totalBytesExpectedToWrite);

    // 測試條件,取消下載任務。
    if (res.progress > 50) {
        downloadTask.abort();
    }
});