【HarmonyOS】@ohos.request 上傳下載的那些事兒

【關鍵字】

@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接口有返回數據,上傳下載接口回調是否可以獲取返回的數據?

----上傳下載接口僅支持進行文件上傳和下載功能,接口回調僅用于監聽上傳下載是否完成,無法在回調中接收數據。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/34923.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/34923.shtml
英文地址,請注明出處:http://en.pswp.cn/news/34923.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

GitOps 與 DevOps:了解關鍵差異,為企業做出最佳選擇

在軟件開發領域,GitOps 和 DevOps 是加強協作和實現軟件交付流程自動化的重要技術。雖然這兩種模式都旨在提高軟件開發生命周期的效率,但它們的核心原則和實施方式卻各不相同。 本篇文章將幫助您了解 GitOps 和 DevOps 之間的差異、它們的工作流程&am…

新知識:Monkey 改進版之 App Crawler

原生Monkey 大家知道Monkey是Android平臺上進行壓力穩定性測試的工具,通過Monkey可以模擬用戶觸摸屏幕、滑動、按鍵等偽隨機用戶事件來對設備上的程序進行壓力測試。而原生的Android Monkey存在一些缺陷: 事件太過于隨機,測試有效性大打折扣…

【2023新教程】樹莓派4B開機啟動-樹莓派第一次啟動-樹莓派不使用顯示器啟動-樹莓派從購買到啟動一步一步完全版!

背景 閑來無事,在咸魚上買了一個樹莓派4B。買來配件都十分齊全,于是就想著啟動來測試一下。下面是樹莓派無顯示器第一次啟動的全過程,包含安裝系統。 網上的教程大多需要額外使用顯示器、鼠標、鍵盤之類的外設。然而,樹莓派本身就…

從一到無窮大 #10 討論 Apache IoTDB 大綜述中看到的優勢和不足點

本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可。 本作品 (李兆龍 博文, 由 李兆龍 創作),由 李兆龍 確認,轉載請注明版權。 文章目錄 引言問題定義新技術數據模型schemalessTsfile設計雙MemTable高級可擴展查詢其他 IotD…

免費開源的多種人工智能項目,比如:訓練一個模型,讓人工智能玩王者榮耀

免費開源的多種人工智能項目,比如:訓練一個模型,讓人工智能玩王者榮耀。 全文大綱 PULSE - 該開源項目可以通過給圖片增加像素點來實現去馬賽克或高清化。 Depix - 給打了馬賽克的文字去碼。 TecoGAN - 給視頻去馬賽克或者進行超分辨率。 Sk…

計算機網絡-專業術語

計算機網絡-專業術語 實體 實體:任何可發送或接收信息的硬件或軟件進程 對等實體:收發雙方相同層次中的實體 協議 控制兩個對等實體進行邏輯通信的規則的集合 協議三要素 語法 定義所交換的信息的格式 是用戶數據與控制信息的結構和格式 語義 定義收發雙方所需要完成的操作…

go 切換代理

常用 $ go env -w GO111MODULEon $ go env -w GOPROXYhttps://goproxy.cn,direct 切換成阿里云 go env -w GOPROXYhttps://mirrors.aliyun.com/goproxy/,direct 很多需要切換到阿里云才行 刪除 $ go env -u GOPROXY 查看 $ go env 或者 go env list go get 出錯的時候 …

Kotlin 基礎教程一

Kotlin 基本數據類型 Java | Kotlin byte Byte short Short int Int long Long float Float double Double boolean Boolean c…

一 、個性化電商廣告推薦系統介紹

一 個性化電商廣告推薦系統介紹 1.1 數據集介紹 Ali_Display_Ad_Click是阿里巴巴提供的一個淘寶展示廣告點擊率預估數據集 數據集來源:天池競賽 原始樣本骨架raw_sample 淘寶網站中隨機抽樣了114萬用戶8天內的廣告展示/點擊日志(2600萬條記錄&#xff…

LangChain-ChatGLM在WIndows10下的部署

LangChain-ChatGLM在WIndows10下的部署 參考資料 1、LangChain ChatGLM2-6B 搭建個人專屬知識庫中的LangChain ChatGLM2-6B 構建知識庫這一節:基本的邏輯和步驟是對的,但要根據Windows和現狀做很多調整。 2、沒有動過model_config.py中的“LORA_MOD…

validation之自定義注解@Constraint

前言: 首先,接口參數校驗應該都不陌生,大部分應該都會借助javax.validation進行快捷校驗,一般都是在入參字段上添加NotNull、NotEmpty等,對于一些特殊的入參校驗邏輯,可能不是很適用,現在介紹一…

【ECMAScript】ES6-ES11學習筆記

文章目錄 注意事項1.聲明變量2.定義常量3.解構賦值4.模板字符串5.簡化對象寫法6.箭頭函數7.參數默認值8.rest參數9.擴展運算符10.Symbol11.生成器函數12.Promise基本語法13.集合set14.Map15.類class16.數值擴展17.對象私有屬性18.對象方法擴展19.js文件模塊化20.async和await21…

數據庫操作不再困難,MyBatis動態Sql標簽解析

系列文章目錄 MyBatis緩存原理 Mybatis的CachingExecutor與二級緩存 Mybatis plugin 的使用及原理 MyBatis四大組件Executor、StatementHandler、ParameterHandler、ResultSetHandler 詳解 MyBatisSpringboot 啟動到SQL執行全流程 數據庫操作不再困難,MyBatis動態S…

Neo4j之MATCH基礎

1】基本匹配和返回:查找所有節點和關系,返回節點的標簽和屬性。 MATCH (n) RETURN n;2】條件篩選:查找所有名為 "Alice" 的人物節點。 MATCH (person:Person {name: Alice}) RETURN person;3】關系查詢:查找所有和 &q…

Centos7.6 安裝mysql過程全記錄

在centos 7.6上 離線安裝mysql 的步驟,可參考下文: 一、查看當前MySQL的安裝情況并卸載 1. 查看當前MySQL的安裝情況 查找之前是否安裝了MySQL rpm -qa|grep -i mysql 2.卸載mysql 如果已經安裝mysql,則需要先停止MySQL,再刪除…

YOLOv5、YOLOv8改進:MobileViT:輕量通用且適合移動端的視覺Transformer

MobileViT: Light-weight, General-purpose, and Mobile-friendly Vision Transformer 論文:https://arxiv.org/abs/2110.02178 1簡介 MobileviT是一個用于移動設備的輕量級通用可視化Transformer,據作者介紹,這是第一次基于輕量級CNN網絡性…

LeetCode150道面試經典題--單詞規律(簡單)

1.題目 給定一種規律 pattern 和一個字符串 s ,判斷 s 是否遵循相同的規律。 這里的 遵循 指完全匹配,例如, pattern 里的每個字母和字符串 s 中的每個非空單詞之間存在著雙向連接的對應規律。 2.示例 pattern"abba" s "c…

SpingBoot-Vue前后端——實現CRUD

目錄??????? 一、實例需求 ? 二、代碼實現 🏌 數據庫 👀 后端實現 📫 前端實現 🌱 三、源碼下載 👋 一、實例需求 ? 實現一個簡單的CRUD,包含前后端交互。 二、代碼實現 🏌 數…

[樹莓派]ImportError: libcblas.so.3: cannot open shared object file

嘗試在樹莓派4b安裝opencv-python,出現以下錯誤,ImportError: libcblas.so.3: cannot open shared object file: No such file or directory 解決方法,安裝依賴 sudo apt install libatlas-base-dev 再次import cv2就不會報這個錯誤。

約束綜合中的邏輯互斥時鐘(Logically Exclusive Clocks)

注:本文翻譯自Constraining Logically Exclusive Clocks in Synthesis 邏輯互斥時鐘的定義 邏輯互斥時鐘是指設計中活躍(activate)但不彼此影響的時鐘。常見的情況是,兩個時鐘作為一個多路選擇器的輸入,并根據sel信號…