用OBS打造HarmonyOS个人云相册:Header签名与逐文件备份实战

举报
yd_237669461 发表于 2026/11/11 08:59:30 2026/11/11
【摘要】 手机里的照片越攒越多,换手机、清空间、误删都让人头疼。本文记录我用 HarmonyOS 加华为云对象存储 OBS 搭建个人云相册的实战做法:端侧用 ArkTS 写一个极简相册,云侧只用一个 OBS 桶做存储,上传走 Header 签名,备份按文件逐个推进,断网也不怕丢进度。 一、整体思路:端侧轻,云侧只存对象相册只有三件事:选图、上传、浏览。端侧不保存任何账号密码,只负责挑文件、算签名、发请...

手机里的照片越攒越多,换手机、清空间、误删都让人头疼。本文记录我用 HarmonyOS 加华为云对象存储 OBS 搭建个人云相册的实战做法:端侧用 ArkTS 写一个极简相册,云侧只用一个 OBS 桶做存储,上传走 Header 签名,备份按文件逐个推进,断网也不怕丢进度。

一、整体思路:端侧轻,云侧只存对象

相册只有三件事:选图、上传、浏览。端侧不保存任何账号密码,只负责挑文件、算签名、发请求;OBS 负责存图和按 Key 取图。照片按拍摄日期分目录存放,Key 的形式是 photos/2026/11/11/xxx.jpg,这样在控制台一眼就能按时间翻到想要的照片,也方便以后按前缀批量清理或迁移。相册列表不需要数据库,打开时直接按前缀列出对象,按时间倒序展示即可,简单可靠。

二、Header 签名:把密钥留在发布包之外

直接把访问密钥写进 App 是最常见的错误。我的做法是把签名过程拆开:端侧只拼请求要素,签名用的密钥只保存在开发机本地的配置文件里,发布包里不出现真实密钥。每次上传前,端侧按规范拼出待签字符串,包括 HTTP 方法、Content-Type、日期头和规范化后的资源路径,再用密钥做 HMAC 摘要,把结果放到 Authorization 头里发出去。服务端收到请求后用同一套规则验算签名,对不上就直接拒绝。这样即使请求被抓包,攻击者也拿不到密钥本身;即使密钥泄露,换一对密钥重新配置即可恢复,不用改 App 逻辑。

三、逐文件备份:一次只传一张,进度可恢复

备份最怕中途断网后从头再来。我的策略是一次只传一张,每成功一张就在本地记一条已完成记录,键是文件的本地路径加大小和修改时间。进度界面只显示三类状态:待备份、备份中、已完成。下次打开 App,先比对本地记录,只传还没完成的文件,断点续传天然就有了。上传失败时按文件重试,不阻塞后面的文件;连续失败三次的,标记为待手动处理,避免在弱网下反复空转耗电。

四、缓存与浏览体验

浏览体验的关键是缓存。列表页只加载缩略图,点开详情才加载原图;缩略图按固定宽度生成一份,存在单独的前缀下,避免每次都下载几 MB 的原图。端侧用一个有限大小的磁盘缓存存放最近浏览过的缩略图,超出上限时按最久未使用清理。这样在地铁等弱网环境下,翻看已经看过的照片基本不消耗流量。相册还支持按日期分组折叠,找某一天的照片时不用一直向下翻。

五、踩过的坑

第一个坑是时间偏差。签名里用的日期必须和服务端时间接近,手机时间偏差超过几分钟就会验签失败,排查时先看手机时间是否自动同步。第二个坑是文件名含中文和空格,Key 里的特殊字符要做规范化处理,否则会出现能上传却列不出来的怪现象。第三个坑是大图直传:超过 10MB 的照片先在端侧压到合理尺寸再传,既省流量,上传成功率也高,原图只在用户明确选择原图备份时才上传。

六、小结

个人云相册不需要复杂的后端,一个 OBS 桶加 Header 签名就能跑起来。关键点有三个:密钥决不进发布包,备份按文件逐个推进并记录进度,浏览靠缩略图加有限缓存。这套做法代码量不大,却覆盖了安全、断点续传和弱网体验三个最容易翻车的地方,适合作为 HarmonyOS 练手项目,也能长期用下去。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。