【關鍵字】
@ohos.request、上傳下載?
【寫在前面】
在進行HarmonyOS應用開發時,可能需要進行上傳或下載文件功能開發,本文章主要進行上傳下載相關功能介紹和一些注意事項及FAQ。
【上傳開發步驟】
步驟1:上傳下載接口需要申請ohos.permission.INTERNET權限,如下:
"reqPermissions": [{"name": "ohos.permission.INTERNET"}
]
步驟2:API9以下版本調用request.upload接口,API9可以調用request.uploadFile接口,參數詳見官方文檔說明,代碼如下:
let file = {filename: "test", name: "test", uri: "internal://cache/test.jpg", type: "jpg"};let uploadTask;request.upload({url: 'http://xxx/upload/',header: {},method: "POST",files: [file],data: [{name: "test", value: "value"}]}).then((data) => {console.error('test data: ' + JSON.stringify(data));uploadTask = data;// 可通過progress判斷進度是否完成,uploadedSize等于totalSize表示上傳成功// API9可通過complete監聽上傳任務是否完成uploadTask.on('progress', function callback(uploadedSize, totalSize) {console.info("upload totalSize:" + totalSize + " uploadedSize:" + uploadedSize);});}).catch((err) => {console.error('Failed to request the upload. Cause: ' + JSON.stringify(err));})
步驟3:上傳任務是否完成可根據API版本,參考文檔使用不同接口進行監聽,走到監聽回調即表示文件上傳成功了。
【下載開發步驟】
下載功能開發同上傳類似,同樣需要申請ohos.permission.INTERNET權限,再根據不同API版本,參考文檔調用不同接口即可;官方文檔每個接口均有示例說明,此處不再贅述。
【參考文檔】
上傳下載:文檔中心
【FAQ】
問題1:使用download下載功能,文件較大時,將應用切換到后臺,發現下載任務停止了,如何才能讓應用運行在后臺時,保持下載功能?
----可將downloadTask變量定義為全局變量,若非全局變量,在應用運行后臺時,會導致task任務終止,即下載任務停止。同理,上傳功能也一樣處理。
問題2:上傳或下載過程中,on('progress') 任務進度監聽會走幾次?
----on('progress') 僅用于顯示上傳下載進度,若網速情況良好或者文件大小不是很大的情況下,progress可能僅回調一次,回調次數與網速與下載文件大小均有關系
問題3:若http接口有返回數據,上傳下載接口回調是否可以獲取返回的數據?
----上傳下載接口僅支持進行文件上傳和下載功能,接口回調僅用于監聽上傳下載是否完成,無法在回調中接收數據。