鸿蒙应用开发之应用如何实现腾讯云对象存储?

1. 需求

https://cloud.tencent.com/document/product/436/112125

2. 由来

明确1:公司开发项目必须有上传图片,这些图片最初就和接口也就是java代码放在一起

明确2:一台服务器每秒读写有上限 =》 就好比厕所坑位 同时蹲坑有上限

明确3:考虑到性能问题 图片、样式、接口代码也就是java代码、包括数据库 得放到不同服务器

方案1;每个公司自己搞一个服务器

方案2:用服务器供应商的 (对象存储产品-专门放图片视频等等、云数据库)

回答:选择方案2,还有额外好处例如CDN、例如图片裁剪水印

CDN

大致使用流程

1-下模块

2-导入模块

3-修改配置信息

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

复制代码
import { CosError, QCloudCredential } from '@tencentcloud/cos';
import { CosXmlBaseService, CosXmlServiceConfig } from '@tencentcloud/cos';
import { PutObjectRequest, UploadTask } from '@tencentcloud/cos';
import { photoAccessHelper } from '@kit.MediaLibraryKit';
import { CosXmlUploadTaskResult } from '@tencentcloud/cos/src/main/ets/transfer/UploadTask';
import log from '@open/log';

// 获取临时密钥(业务层控制获取的方式)
let credential : QCloudCredential= new QCloudCredential();
credential.secretID = "AKIDd8UebLvISSJ883qiQxJix0xjKl04zkJg";
credential.secretKey = "HPL6iBVdZIqEfPxLWdp5EGD2lLlHnBNS";
// credential.token = "token";
// startDate和expirationDate均为Date类型,此处通过毫秒时间戳构造Date
// credential.startDate = new Date();
// credential.expirationDate = new Date();

@Entry
@Component
struct Test {

  @State img:string | undefined = ''

  build() {
    Column() {
      Image(this.img).width(300)
      Button('文档上传').onClick(async () => {
        log.init({close:false,tag:"✨"})


        let PhotoSelectOptions = new photoAccessHelper.PhotoSelectOptions();
        PhotoSelectOptions.MIMEType = photoAccessHelper.PhotoViewMIMETypes.IMAGE_TYPE;
        PhotoSelectOptions.maxSelectNumber = 1;
        let photoPicker = new photoAccessHelper.PhotoViewPicker();
        let photoSelectResult: photoAccessHelper.PhotoSelectResult = await photoPicker.select(PhotoSelectOptions);
        const localPath:string = photoSelectResult.photoUris[0];

        log.info('00000')
        log.info(localPath)


        // 服务配置
        let cosXmlServiceConfig = new CosXmlServiceConfig("ap-beijing"); // ✅
        // 初始化默认的Service
        CosXmlBaseService.initDefaultService(
          // this.context.getApplicationContext(),
          getContext(this),
          cosXmlServiceConfig,
          async () => credential
        )

        // 任何CosXmlRequest都支持这种方式,例如上传PutObjectRequest、下载GetObjectRequest、删除DeleteObjectRequest等
        // 以下用上传进行示例
        let putRequest = new PutObjectRequest("slj-1257200217", "temp1111111.jpg", localPath);  // ✅
        // credential为第一步"初始化密钥"中获取到的单次临时密钥
        putRequest.credential = credential;
        let task: UploadTask = CosXmlBaseService.default().upload(putRequest);
          task.onResult = {
            onSuccess: (request, result: CosXmlUploadTaskResult) => {
              // const match = result.accessUrl!.match(/user\/.*/)
              // todo 上传成功后的逻辑
              // this.upload({avatar:result.picUploadResult?.originalInfo?.key as string})
              // this.upload({ avatar: match![0] })
              log.info(1111)
              log.info(result.accessUrl)
              this.img = result.accessUrl
            },
            onFail: (request, error: CosError) => {
              // todo 上传失败后的逻辑
              log.info(2222)
              log.info(error)
            }
          }
        task.start();
          // ===================
      })
    }
  }
}

鸿蒙开发者班级

相关推荐
ServBay13 小时前
9 个 Python 第三方库推荐,不用 AI 都好像多出一个团队
后端·python
用户83562907805113 小时前
如何使用 Python 添加和管理 Excel 批注(完整示例)
后端·python
用户83562907805113 小时前
使用 Python 管理 Excel 工作表:创建、复制、删除与重命名
后端·python
荣码1 天前
LangGraph多Agent协作:3个Agent干活比1个强,但我踩了4个坑
java·python
用户8356290780512 天前
Python 操作 PDF 附件:添加、查看与管理指南
后端·python
宇宙之一粟2 天前
乐企版式文件生成平台
java·后端·python
学测绘的小杨3 天前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
zzzzzz3103 天前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐3 天前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
兵慌码乱3 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构