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

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();
          // ===================
      })
    }
  }
}

鸿蒙开发者班级

相关推荐
李可以量化3 小时前
redis-py 从了解到精通(三):Redis Key 核心操作函数详解(上)
python
卷无止境3 小时前
FastAPI 实现 SSO,从协议原理到生产级落地
后端·python·fastapi
卷无止境3 小时前
FastAPI 与 RustFS 集成指南
后端·python·fastapi
青 春 记 忆3 小时前
零基础入门python25:新增账目——Decimal、日期和输入校验
python·后端开发
北风toto3 小时前
阿里云 MaxCompute通过python脚本调用odps流程和执行sql
python·阿里云·odps
聚搜云——JuSouClouD4 小时前
武汉阿里云代理商:云虚拟主机需要自己备份吗?网站文件误删后还能恢复吗
阿里云·云计算
qq_161111274 小时前
Pillow项目深度解析:Python图像处理的终极武器
图像处理·python·pillow·开源库·历史解析
梅孔立4 小时前
Pi-Agent 终极极简配置文档(Java+Vue+Python爬虫 4-5千文件项目)
java·vue.js·python
李可以量化4 小时前
Redis Client 从了解到精通(二)下:String 类型进阶操作全解
redis·git·python·量化交易·qmt
leisoo80974 小时前
财报舞弊预警系统实战用Python挖掘应收存货异常因子 IG50免费开源股票数据API接口
开发语言·python