ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

《HarmonyOS 7 跨设备数据协同专题》03:Asset 文件迁移与 RDB 数据绑定【鸿蒙心迹】

《HarmonyOS 7 跨设备数据协同专题》03:Asset 文件迁移与 RDB 数据绑定【鸿蒙心迹】 文字能同步为什么图片传过去就裂了前两篇文字同步都跑通了。这篇加图片附件。最开始的思路很简单把文件路径同步过去另一台设备直接读不就行了结果传过去图片直接裂了。才意识到一个文件路径传到另一台设备上根本没有意义。那台设备上根本没有这个文件。一、本地路径为什么没有跨设备意义先想一下手机上的文件路径是/data/xxx/photo.jpg这个路径在手机上是对的。但传到平板上平板上根本没有这个路径的文件。路径只是个地址文件本身没过去。方式文件本身跨设备同步本地路径没过去不行Asset 迁移过去了可以二、Asset 是什么Asset 就是专门用来跨设备迁移文件的。它不是一个路径是带着文件实体的。你把文件放到 Asset 里分布式数据对象同步的时候会把文件实体一起传过去。这段代码解决什么问题把图片作为 Asset 同步。文件distributed/NoteObject.ets用途附件跨设备同步接入位置笔记添加图片import{distributedDataObject}fromkit.ArkData;import{commonType}fromkit.ArkData;// 创建 AssetletimageAsset:commonType.Asset{name:photo.jpg,uri:file://docs/storage/Users/currentUser/photo.jpg,createTime:2026-09-22,mimeType:image/jpeg};// 放到分布式对象里noteObj.imageimageAsset;这样同步的时候图片文件就跟着一起过去了。三、bindAssetStore 是什么光同步文件还不够。笔记记录存在数据库里附件也得跟数据库绑定。bindAssetStore 就是把 Asset 和 RDB 数据库绑定起来。数据库里存的笔记记录和附件文件形成完整的数据关系。四、几个容易踩的坑第一个坑直接同步 /data/… 本地路径。路径传过去了文件没过去。第二个坑把多个附件直接塞进 Asset 数组。有限制不是随便塞。第三个坑文件没进入支持的分布式目录。文件得在支持的目录里才能同步。第四个坑数据库记录已经同步但附件还没准备好。记录到了文件还没下完。这次做附件同步最大的体会是描述一个文件和真正搬一个文件完全是两件事。路径只是描述Asset 才是真正把文件实体搬过去。
返回列表