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

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

鸿蒙开发者班级

相关推荐
天才测试猿7 小时前
2026软件测试面试八股文(含答案+文档)
自动化测试·软件测试·python·功能测试·测试工具·面试·职场和发展
张小凡vip8 小时前
python--爬虫--成熟的爬虫框架Scrapy
爬虫·python·scrapy
Pluchon8 小时前
Java个人综合项目——萌部落社区V2.0
java·python·spring·spring cloud·postman·idea
不瘦80斤不改名9 小时前
01-vibe-coding-起源与本质
人工智能·python
夜雪一千9 小时前
如何对新闻数据进行模糊去重
python
oyguyteggytrrwwwrt11 小时前
3dgs渲染部分详细注释
python
天天爱吃肉821813 小时前
【重磅发布:拿下新超仁达代理权 】
大数据·人工智能·python·功能测试·汽车
神王宝宝 王者小学13 小时前
面向领域驱动架构的查询实现方式
前端·python·架构
ningmengjing_14 小时前
Redis 从入门到实战:Python操作全攻略
数据库·redis·python
️学习的小王14 小时前
智能文档助手:基于RAG的本地化文档问答系统实战指南
人工智能·python·机器学习