一、文件上传:从基础到企业级方案
文件上传是鸿蒙应用开发的核心场景(如头像上传、附件提交、图片分享),鸿蒙基于沙箱安全机制,要求上传文件必须先存入应用沙箱目录(cacheDir),再通过系统 API 提交。以下是图片上传、拍照上传、任意文件上传的完整实现,附企业级封装工具类。
1.1 图片上传(媒体库选择)
思路
1、使用Picker选择媒体库的图片与视频 (返回一个临时的图片地址 file:// 咱们可以直接预览 也可以继续向后走 拿到服务器地址再预览)
2、把图片拷贝到应用的缓存目录 (不支持直接通过相册本地路径请求接口,仅支持通过缓存目录上传 context.cacheDir)
3、上传文件 request.uploadFile到服务器
-
使用Picker选择媒体库的图片与视频
-
把图片拷贝到应用的沙箱目录
当前上传应用文件功能,不支持直接上传本地相册的文件,仅支持上传应用缓存文件路径(cacheDir)下的文件。
- 上传图片到服务器
准备好参数调用request.uploadFile()获得上传对象 uploader
给uploader对象注册progress事件,监听上传进度 requestRes.on("progress", (uploadedSize: number, totalSize: number)=>{})
- 示例代码
1.2 拍照上传
API参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-camerapicker-V13
1.3 其他文件 - 选择用户文件
http://tmp00002.zhaodashen.cn/hello.txt
http://tmp00002.zhaodashen.cn/hello2.docx
http://tmp00002.zhaodashen.cn/hello3.pdf
http://tmp00002.zhaodashen.cn/hello4.zip
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V13/select-user-file-V13
text/zip/pdf/docx
1.4 切片上传/断点续传
后续讲解,也可以私聊付费解答
1.5 对象存储 实战
-
- 需求
https://cloud.tencent.com/document/product/436/112125
-
- 由来
明确1:公司开发项目必须有上传图片,这些图片最初就和接口也就是java代码放在一起
明确2:一台服务器每秒读写有上限 =》 就好比厕所坑位 同时蹲坑有上限
明确3:考虑到性能问题 图片、样式、接口代码也就是java代码、包括数据库 得放到不同服务器
方案1;每个公司自己搞一个服务器
方案2:用服务器供应商的 (对象存储产品-专门放图片视频等等、云数据库)
回答:选择方案2,还有额外好处例如CDN、例如图片裁剪水印
大致使用流程
1-下模块
2-导入模块
3-修改配置信息
-
- 腾讯云
步骤1:注册账号 https://cloud.tencent.com/document/product/436/112125
步骤2:个人中心、访问管理、用户列表、新建用户 -》 点击进去 操作 API密钥 (新增就可以看到secretID/secretKey)
https://console.cloud.tencent.com/cam
步骤3:左上角搜索产品对象存储、创建存储桶列表 https://console.cloud.tencent.com/cos/bucket
步骤4:根据步骤1、2、3操作 https://cloud.tencent.com/document/product/436/112125
-
- 阿里云
https://help.aliyun.com/zh/oss/use-cases/harmonyos-environmental-server-signature-direct-transmission?spm=a2c4g.11186623.help-menu-31815.d_4_1_3.68d0285cYjNNA0&scm=20140722.H_2834342._.OR_help-T_cn~zh-V_1
-
- 七牛云
https://developer.qiniu.com/kodo/12669/kodo-harmony-sdk
1.6 周边语法 统计文件大小
二、下载模块、Zip模块
2.1 基础使用
http://tmp00002.zhaodashen.cn/hello.txt
http://tmp00002.zhaodashen.cn/hello2.docx
http://tmp00002.zhaodashen.cn/hello3.pdf
http://tmp00002.zhaodashen.cn/hello4.zip
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-request-V13#requestdownloadfile9
https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-zlib-V13
2.2 封装使用
封装
使用
鸿蒙开发者班级