鸿蒙开发(NEXT/API 12)【上传下载文件】远场通信场景
场景介绍
本协议栈框架支持将文件上传到服务器或者从服务器下载文件。
开发步骤
- 导包。
import { rcp } from '@kit.RemoteCommunicationKit';
import {fileIo} from '@kit.CoreFileKit';
- 下载文件。
let SESSION_CONFIG: rcp.SessionConfiguration = {// 此处请根据业务设置合适的Configuration
}
let DOWNLOAD_TO_PATH = ""; // 请根据自身业务选择合适的路径
// 1、下载到文件
const session = rcp.createSession(SESSION_CONFIG);
const respMemory = await session.get("https//www.example.com");
const dataMemory = respMemory.toString();
if (fileIo.accessSync(DOWNLOAD_TO_PATH)) {fileIo.unlinkSync(DOWNLOAD_TO_PATH);
}
const resp = await session.downloadToFile("https//www.example.com", {kind: 'file',file: DOWNLOAD_TO_PATH
});
session.close();
// 2、下载到目录
const session = rcp.createSession(SESSION_CONFIG);
const respMemory = await session.get("https//www.example.com");
const dataMemory = respMemory.toString();
const downloadedPath = "FILES_DIR" + "DOWNLOAD_FOLDER_SUB_PATH"; // 请根据自身业务选择合适的路径
if (fileIo.accessSync(downloadedPath)) {fileIo.unlinkSync(downloadedPath);
}
const resp = await session.downloadToFile("https//www.example.com", {kind: 'folder',path: "FILES_DIR" // 请根据自身业务选择合适的路径
});
session.close();
// 3、下载到文件描述符
const session = rcp.createSession(SESSION_CONFIG);
const respMemory = await session.get("https//www.example.com");
const dataMemory = respMemory.toString();
if (fileIo.accessSync(DOWNLOAD_TO_PATH)) {fileIo.unlinkSync(DOWNLOAD_TO_PATH);
}
const file = fileIo.openSync(DOWNLOAD_TO_PATH, fileIo.OpenMode.CREATE | fileIo.OpenMode.WRITE_ONLY);
const resp = await session.downloadToFile("https//www.example.com", {kind: 'file',file: file.fd
});
fileIo.closeSync(file.fd);
session.close();
// 4、下载到文件对象
const session = rcp.createSession(SESSION_CONFIG);
const respMemory = await session.get("https//www.example.com");
const dataMemory = respMemory.toString();
if (fileIo.accessSync(DOWNLOAD_TO_PATH)) {fileIo.unlinkSync(DOWNLOAD_TO_PATH);
}
const file = fileIo.openSync(DOWNLOAD_TO_PATH, fileIo.OpenMode.CREATE | fileIo.OpenMode.WRITE_ONLY);
const resp = await session.downloadToFile("https//www.example.com", {kind: 'file',file: file
});
fileIo.closeSync(file.fd);
session.close();
- 将文件上传到指定路径。
let SESSION_CONFIG: rcp.SessionConfiguration = {// 此处请根据业务设置合适的Configuration
}
// 1、传入一个文件路径
const session = rcp.createSession(SESSION_CONFIG);
const resp = await session.uploadFromFile("https://www.example.com", new rcp.UploadFromFile("UPLOAD_FILE")); // 请根据自身业务填写
const json = resp.toJSON();
session.close();
// 2、传入一个文件描述符
const session = rcp.createSession(SESSION_CONFIG);
const file = fileIo.openSync("UPLOAD_FILE", fileIo.OpenMode.READ_ONLY); // 请根据自身业务填写UPLOAD_FILE
const resp = await session.uploadFromFile("https://www.example.com", new rcp.UploadFromFile(file.fd));
const json = resp.toJSON();
fileIo.closeSync(file.fd);
session.close();
// 3、传入一个文件对象
const session = rcp.createSession(SESSION_CONFIG);
const file = fileIo.openSync("UPLOAD_FILE", fileIo.OpenMode.READ_ONLY); // 请根军自身业务定义UPLOAD_FILE
const resp = await session.uploadFromFile("https://www.example.com", new rcp.UploadFromFile(file));
const json = resp.toJSON();
fileIo.closeSync(file.fd);
session.close();
// 4、使用自定义文件对象
class FdReadFile {readonly fd: number;constructor(fd: number) {this.fd = fd;}async read(buffer: ArrayBuffer): Promise<number> {return fileIo.read(this.fd, buffer);}
}
const session = rcp.createSession(SESSION_CONFIG);
const file = fileIo.openSync("UPLOAD_FILE", fileIo.OpenMode.READ_ONLY);
const resp = await session.uploadFromFile("https://www.example.com", new rcp.UploadFromFile(new FdReadFile(file.fd)));
const json = resp.toJSON();
fileIo.closeSync(file.fd);
session.close();
// 5、使用自定义文件流
class FdReadStream {readonly file: FdReadFile;constructor(fd: number) {this.file = new FdReadFile(fd);}async read(buffer: ArrayBuffer): Promise<number> {return this.file.read(buffer);}
}
const session = rcp.createSession(SESSION_CONFIG);
const file = fileIo.openSync("UPLOAD_FILE", fileIo.OpenMode.READ_ONLY); // 请根据自身业务定义UPLOAD_FILE
const resp = await session.uploadFromFile("https://www.example.com", new rcp.UploadFromFile(new FdReadStream(file.fd)));
const json = resp.toJSON();
fileIo.closeSync(file.fd);session.close();
session.close();
// 6、使用自定义文件流
class FdSyncReadStream {readonly file: FdReadFile;constructor(fd: number) {this.file = new FdReadFile(fd);}async read(buffer: ArrayBuffer): Promise<number> {return this.file.read(buffer);}
}
const session = rcp.createSession(SESSION_CONFIG);
const file = fileIo.openSync("UPLOAD_FILE", fileIo.OpenMode.READ_ONLY);
const resp = await session.uploadFromStream("https:www.example.com", new rcp.UploadFromStream(new FdSyncReadStream(file.fd)));
const json = resp.toJSON();
fileIo.closeSync(file.fd);
最后呢
很多开发朋友不知道需要学习那些鸿蒙技术?鸿蒙开发岗位需要掌握那些核心技术点?为此鸿蒙的开发学习必须要系统性的进行。
而网上有关鸿蒙的开发资料非常的少,假如你想学好鸿蒙的应用开发与系统底层开发。你可以参考这份资料,少走很多弯路,节省没必要的麻烦。由两位前阿里高级研发工程师联合打造的《鸿蒙NEXT星河版OpenHarmony开发文档》里面内容包含了(ArkTS、ArkUI开发组件、Stage模型、多端部署、分布式应用开发、音频、视频、WebGL、OpenHarmony多媒体技术、Napi组件、OpenHarmony内核、Harmony南向开发、鸿蒙项目实战等等)鸿蒙(Harmony NEXT)技术知识点
如果你是一名Android、Java、前端等等开发人员,想要转入鸿蒙方向发展。可以直接领取这份资料辅助你的学习。下面是鸿蒙开发的学习路线图。

针对鸿蒙成长路线打造的鸿蒙学习文档。话不多说,我们直接看详细鸿蒙(OpenHarmony )手册(共计1236页)与鸿蒙(OpenHarmony )开发入门视频,帮助大家在技术的道路上更进一步。
- 《鸿蒙 (OpenHarmony)开发学习视频》
- 《鸿蒙生态应用开发V2.0白皮书》
- 《鸿蒙 (OpenHarmony)开发基础到实战手册》
- OpenHarmony北向、南向开发环境搭建
- 《鸿蒙开发基础》
- 《鸿蒙开发进阶》
- 《鸿蒙开发实战》

总结
鸿蒙—作为国家主力推送的国产操作系统。部分的高校已经取消了安卓课程,从而开设鸿蒙课程;企业纷纷跟进启动了鸿蒙研发。
并且鸿蒙是完全具备无与伦比的机遇和潜力的;预计到年底将有 5,000 款的应用完成原生鸿蒙开发,未来将会支持 50 万款的应用。那么这么多的应用需要开发,也就意味着需要有更多的鸿蒙人才。鸿蒙开发工程师也将会迎来爆发式的增长,学习鸿蒙势在必行! 自↓↓↓拿

相关文章:
鸿蒙开发(NEXT/API 12)【上传下载文件】远场通信场景
场景介绍 本协议栈框架支持将文件上传到服务器或者从服务器下载文件。 开发步骤 导包。 import { rcp } from kit.RemoteCommunicationKit; import {fileIo} from kit.CoreFileKit;下载文件。 let SESSION_CONFIG: rcp.SessionConfiguration {// 此处请根据业务设置合适的…...
快速理解AUTOSAR CP的软件架构层次以及各层的作用
在 AUTOSAR CP 的架构中,软件分为 应用层 (App)、运行时环境 (RTE) 和 基础软件层 (BSW) 三个主要层级。下面是每一层的主要功能与简单的代码示例来展示它们之间的关系。 1. 概述 应用层 (App):包含应用程序代码,主要实现业务逻辑。应用层通…...
【Unity】Unity中接入Admob聚合广告平台,可通过中介接入 AppLovin,Unity Ads,Meta等渠道的广告
一、下载Google Admob的SDK插件 到Google Admob官网中,切换到Unity平台 进来之后是这样,注意后面有Unity标识,然后点击下载,跳转到github中,下载最新的Admob插件sdk,导入到Unity中 二、阅读官方文档&…...
PythonExcel批量pingIP地址
问题: 作为一个电气工程师(PLC),当设备掉线的时候,需要用ping工具来检查网线物理层是否可靠连接,当项目体量过大时,就不能一个手动输入命令了。 解决方案一: 使用CMD命令 for /L %…...
软媒市场新蓝海:软文媒体自助发布与自助发稿的崛起
在信息时代的浪潮中,软媒市场以其独特的魅力和无限的潜力,成为了企业营销的新宠。随着互联网的飞速发展,软文媒体自助发布平台应运而生,为企业提供了更加高效、便捷的营销方式。而自助发稿功能的加入,更是让软媒市场的蓝海变得更加广阔。 软媒市场的独特价值 软媒市场之所以能…...
【笔记】Day2.5.1查询运费模板列表(未完
(一)代码编写 1.阅读需求,确保理解其中的每一个要素: 获取全部运费模板:这意味着我需要从数据库中查询所有运费模板数据。按创建时间倒序排序:这意味着查询结果需要根据模板的创建时间进行排序࿰…...
阿基米德螺旋线等距取点
曲线公式 极坐标形式: 笛卡尔坐标形式: 弧长公式 对极坐标形式积分可得弧长为: 将上式转换为一元二次方程: 解此一元二次方程可得: 等距取点 弧长L等距递增,代入公式,再利用笛卡尔坐标公式即…...
2024年全球增强现实(AR)市场分析报告
一、增强现实统计数据(2024) 市场价值:2024年,全球AR市场价值超过320亿美元,并预计到2027年将突破500亿美元。用户基础:目前约有14亿活跃的AR用户设备,这一数字预计将在2024年增长至17.3亿。消费者认知:大约四分之三的44岁以下成年人对AR有所了解。购物体验:基于AR的购物…...
探索 NetworkX:Python中的网络分析利器
文章目录 **探索 NetworkX:Python中的网络分析利器**一、背景介绍二、NetworkX是什么?三、如何安装NetworkX?四、NetworkX的五个简单函数五、NetworkX的三个应用场景六、常见问题及解决方案七、总结 探索 NetworkX:Python中的网络…...
Python知识点:基于Python技术,如何使用AirSim进行无人机模拟
开篇,先说一个好消息,截止到2025年1月1日前,翻到文末找到我,赠送定制版的开题报告和任务书,先到先得!过期不候! 如何使用Python和AirSim进行无人机模拟 无人机技术的发展为许多行业带来了革命性…...
《中国林业产业》是什么级别的期刊?是正规期刊吗?能评职称吗?
问题解答 问:《中国林业产业》是不是核心期刊? 答:不是,是知网收录的正规学术期刊。 问:《中国林业产业》级别? 答:国家级。主管单位:国家林业和草原局 …...
私域流量下的白酒新传奇:半年破五千万的营销策略揭秘
在当今的数字化浪潮中,某白酒品牌独树一帜,摒弃了实体店和传统电商的常规路径,仅凭其精心构建的私域流量生态,在短短六个月内创造了超过五千万元的销售额奇迹。这一非凡成就背后,蕴含着一套独特的营销策略。 重塑营销&…...
Tomcat 配置:方便运行 Java Web 项目
目录 一、作用 二、安装 三、配置环境 四、启动 五、访问 一、作用 是一个轻量级的web服务器,可使用Tomcat运行Java Web项目。 二、安装 1. 基于JDK(安装Tomcat之前,先安装JDK,并配置环境变量JAVA_HOME) 2. apache-tom…...
Spring Boot知识管理:机器学习与AI集成
5系统详细实现 5.1 管理员模块的实现 5.1.1 用户管理 知识管理系统的管理员可以对用户新增,修改,删除,查询操作。具体界面的展示如图5.1所示。 图5.1 用户管理管理界面 5.1.2 文章分类 管理员登录可以在文章分类新增,修改&#…...
Superset SQL模板使用
使用背景 有时想让表的时间索引生效,而不是在最外层配置报表时,再套多一层时间范围。这时可以使用SQL模板 参考官方文档 https://superset.apache.org/docs/configuration/sql-templating/#:~:textSQL%20Lab%20and%20Explore%20supports%20Jinja 我…...
算法工程师重生之第二十七天(合并区间 单调递增的数字 监控二叉树 总结)
参考文献 代码随想录 一、合并区间 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1:…...
前端开发基础NodeJS+NPM基本使用(零基础入门)
文章目录 1、Nodejs基础1.1、NodeJs简介1.2、下载安装文件1.3、安装NodeJS1.4、验证安装2、Node.js 创建第一个应用2.1、说明2.2、创建服务脚本2.3、执行运行代码2.4、测试访问3、npm 基本使用3.1、测试安装3.2、配置淘宝npm镜像3.3.1、本地安装3.3.2、全局安装3.4、查看安装信…...
深度学习 nd.random.normal()
nd.random.normal() 是 MXNet 中用于生成符合正态分布(高斯分布)随机数的函数。它允许用户指定均值、标准差以及生成的随机数的形状。 函数签名 mx.nd.random.normal(loc0.0, scale1.0, shape(1,)) 参数 loc: 生成的随机数的均值,默认为 …...
Redis Geo 数据类型解析:基于 ZSET 的高效地理位置管理0708
根据官网介绍: Bitmaps are not an actual data type, but a set of bit-oriented operations defined on the String type which is treated like a bit vector. Since strings are binary safe blobs and their maximum length is 512 MB, they are suitable to s…...
爬虫post收尾以及cookie加代理
爬虫post收尾以及cookie加代理 目录 1.post请求收尾 2.cookie加代理 post收尾 post请求传参有两种格式,载荷中有请求载荷和表单参数,我们需要做不同的处理。 1.表单数据:data字典传参 content-type: application/x-www-form-urlencoded; …...
Kerberos身份认证原理与企业级排错实战指南
1. 这不是“另一个登录框”,而是一套精密运转的身份验证齿轮系统很多人第一次听说 Kerberos,是在公司内网登录邮箱或访问内部系统时,看到那个带小盾牌图标的弹窗——“正在使用 Kerberos 协议进行身份验证”。于是下意识觉得:“哦…...
Python开发者首次使用Taotoken接入大模型API的完整步骤指南
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Python开发者首次使用Taotoken接入大模型API的完整步骤指南 对于Python开发者而言,接入大模型API进行应用开发已成为一…...
钱钟书《围城》第1-5章阅读笔记:一场关于人生困境的提前预演
前言 钱钟书先生的《围城》被誉为"新儒林外史",是中国现代文学史上风格独特的讽刺经典。这部创作于20世纪40年代的长篇小说,以抗战初期为背景,通过主人公方鸿渐的人生轨迹,深刻揭示了知识分子群体的精神困境与人性弱点。…...
ComfyUI-Manager完全指南:掌握AI工作流管理的核心技术
ComfyUI-Manager完全指南:掌握AI工作流管理的核心技术 【免费下载链接】ComfyUI-Manager ComfyUI-Manager is an extension designed to enhance the usability of ComfyUI. It offers management functions to install, remove, disable, and enable various custo…...
终极解决方案:Windows Cleaner免费开源工具,3步彻底解决C盘爆红问题
终极解决方案:Windows Cleaner免费开源工具,3步彻底解决C盘爆红问题 【免费下载链接】WindowsCleaner Windows Cleaner——专治C盘爆红及各种不服! 项目地址: https://gitcode.com/gh_mirrors/wi/WindowsCleaner 你是否也经历过这样的…...
3步快速恢复加密压缩包密码:ArchivePasswordTestTool终极指南
3步快速恢复加密压缩包密码:ArchivePasswordTestTool终极指南 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 面对遗忘的加密压…...
如何用嘎嘎降AI处理金融学论文:金融学毕业论文降AI4.8元完整操作教程
如何用嘎嘎降AI处理金融学论文:金融学毕业论文降AI4.8元完整操作教程 第一次用降AI工具有很多不确定——传什么格式、选哪个模式、怎么验收。 这篇教程把金融学论文降AI教程的常见问题都覆盖了,主要基于嘎嘎降AI(www.aigcleaner.com&#x…...
3步精通WaveTools:鸣潮全场景性能优化终极指南
3步精通WaveTools:鸣潮全场景性能优化终极指南 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 开源优化工具WaveTools作为《鸣潮》玩家必备的性能调校助手,通过深度配置优化实现画质…...
Windows安卓应用安装终极指南:APK Installer让你的电脑变身安卓平台
Windows安卓应用安装终极指南:APK Installer让你的电脑变身安卓平台 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为无法在Windows电脑上直接安装安卓…...
安全多方计算中稀疏矩阵乘法优化:原理、实现与隐私保护应用
1. 项目概述:当稀疏矩阵遇上安全多方计算在机器学习、推荐系统这些我们每天都会接触到的技术背后,数据往往以一种“稀疏”的形式存在。想象一下一个拥有百万用户和十万本书籍的在线书店,每个用户可能只读过其中几十本,那么构建一个…...
