Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何用Baas快速在腾讯云上开发小程序之系列3 :实现腾讯云COS API调用

如何用Baas快速在腾讯云上开发小程序之系列3 :实现腾讯云COS API调用

原创
作者头像
贺嘉
修改于 2017-06-19 11:26:48
修改于 2017-06-19 11:26:48
3.3K0
举报
文章被收录于专栏:贺嘉的专栏贺嘉的专栏

一、实验简介

本实验通过调用腾讯云对象存储(COS)接口,实现将图片上传到指定的 Bucket 功能;同时封装图片上传接口,用于上传商品图片。

二、实验目标

  1. 掌握 RESTFul API 接口调用和调试方法
  2. 掌握 RESTFul API 封装方法

三、实验步骤

3.1 添加云应用

第一步: clone xqcloud 项目

代码语言:txt
AI代码解释
复制
1. cd <your project path>
2. git clone https://git.oschina.net/xpmjs/xqcloud.git xqcloud

第二步:修改远程仓库地址,提交到远程仓库

代码语言:txt
AI代码解释
复制
1. git remote remove origin
2. git remote add origin ssh://git@dev.appcook.cn:2222/source/xqcloud.git
3. git push origin master

3.2 调用 COS API,实现文件上传功能

第一步:编写 Cos Model vi xqcloud/model/Cos.php

代码语言:txt
AI代码解释
复制
1. <?php
2. use \Tuanduimao\Mem as Mem;
3. use \Tuanduimao\Excp as Excp;
4. use \Tuanduimao\Err as Err;
5. use \Tuanduimao\Conf as Conf;
6. use \Tuanduimao\Model as Model;
7. use \Tuanduimao\Utils as Utils;
8. use \Tuanduimao\Loader\App as App;
9. /**
10. * cos对象存储11. */
12. class CosModel {
13. function __construct( $opt=[] ) {
14. $this->appid = isset($opt['appid']) ? $opt['appid'] : "";
15. $this->bucket = isset($opt['bucket']) ? $opt['bucket'] : "";
16. $this->SecretID = isset($opt['SecretID']) ? $opt['SecretID'] : "";
17. $this->SecretKey = isset($opt['SecretKey']) ? $opt['SecretKey'] : "";
18. }
19. /**
20. * 签名
21. * @param array $opt [description]
22. * @return [type] [description]
23. */
24. function sign( $opt=[] ) {
25. $randstr= $this->generateId(10);
26. $t = isset($opt['e']) ? time()+86400 : 0;
27. $a = isset($opt['appid']) ? $opt['appid'] : $this->appid;
28. $b = isset($opt['bucket']) ? $opt['bucket'] : $this->bucket;
29. $k = isset($opt['SecretID']) ? $opt['SecretID'] : $this->SecretID;
30. $e = isset($opt['e']) ? $opt['e'] : time()+3600;
31. $SecretKey = isset($opt['SecretKey']) ? $opt['SecretKey'] : $this->SecretKey;
32. $s = [
33. "a" => $a,
34. "b" => $b,
35. "k" => $k,
36. "e" => $e,
37. "t" => time(),
38. "r" => $randstr,
39. "f" =>$opt['file'],
40. ];
41. // 拼接字符串
42. $orignal = "a={$s['a']}&k={$s['k']}&e={$s['e']}&t={$s['t']}&r={$s['r']}&f={$s['f']}&b={$s['b']}";
43. $signTmp = hash_hmac( 'SHA1', $orignal, $SecretKey , true );
44. $sign = base64_encode($signTmp.$orignal);
45. return $sign;
46. }
47.
48. /**
49. * 文件转.字符串
50. * @param [type] $imageUrl [description]
51. * @param array $opt [description]
52. * @return [type] [description]
53. */
54. function uploadByUrl( $imageUrl, $opt=[] ) {
55. $imageData = file_get_contents( $imageUrl );
56. return $this->upload( $imageData, $opt );
57. }
58.
59. /**
60. * 文件上传61. * @param [type] $imageData [description]
62. * @param array $opt [description]
63. * @return [type] [description]S
64. */
65. function upload( $imageData, $opt=[] ){
66. // 生成随机数

第二步: 编写测试用控制器 vi xqcloud/controller/Cos.php

代码语言:txt
AI代码解释
复制
1. <?php
2. use \Tuanduimao\Loader\App as App;
3. use \Tuanduimao\Utils as Utils;
4. use \Tuanduimao\Tuan as Tuan;
5. use \Tuanduimao\Excp as Excp;
6. use \Tuanduimao\Conf as Conf;
7.
8. class CosController extends \Tuanduimao\Loader\Controller {
9.
10. function __construct() {
11. }
12.
13. function tryit() {
14.
15. $config = [
16. 'region'=>'<tj/sh/gd>',
17. 'appid'=>'<your appid>',
18. 'bucket'=>'<your bucket>',
19. 'SecretID'=>"<your SecretID>",
20. 'SecretKey'=>"<your SecretKey>"
21. ];
22. $cos = App::M('Cos',$config);
23. $content =file_get_contents("http://7xleg1.com1.z0.glb.clouddn.com/x1/2/lab/uploadit.jpg");
24. $resp = $cos->upload( $content, ['region'=>$config['region'], '
filetype'=>'jpg'] );
25. Utils::out($resp);
26. }
27.
28. }

第三步: 提交代码并更新线上

代码语言:txt
AI代码解释
复制
1. git add *
2. git commit -m '+COS Tryit {{pull}}' # {{pull}} feed 指令更新线上代码
3. git push

第四步: 安装 XQCloud 应用

访问 https://dev.appcook.cn/core-system/appmanager/index , 安装应用

第五步: 登录云主机,运行测试

代码语言:txt
AI代码解释
复制
1. docker exec -it xpmjs-server /bin/bash # 进入容器
2. tdm app run /apps/xqcloud/controller/Cos.php tryit # 运行测试

3.3 封装图片上传接口

第一步:创建配置文件 vi xqcloud/config.php

代码语言:txt
AI代码解释
复制
1. <?php
2. $GLOBALS['_QC'] = [
3. 'cos'=>[
4. 'region'=>'<tj/sh/gd>',
5. 'appid'=>'<your appid>',
6. 'bucket'=>'<your bucket>',
7. 'SecretID'=>"<your SecretID>",
8. 'SecretKey'=>"<your SecretKey>"
9. ]
10. ];

第二步:修改控制器 vi xqcloud/controller/Cos.php

代码语言:txt
AI代码解释
复制
1. <?php
2. require_once(__DIR__ . '/../config.php');
3. use \Tuanduimao\Loader\App as App;
4. use \Tuanduimao\Utils as Utils;
5. use \Tuanduimao\Tuan as Tuan;
6. use \Tuanduimao\Excp as Excp;
7. use \Tuanduimao\Conf as Conf;
8.
9. class CosController extends \Tuanduimao\Loader\Controller {
10.
11. function __construct() {
12. }
13.
14. /**
15. * 上传文件接口
16. * @return [type] [description]
17. */
18. function upload() {
19.
20. $file = !empty($_FILES['wxfile']) ? $_FILES['wxfile'] : [];
21. $content = !empty($file['content']) ?base64_decode($file['content']) : NULL;
22. $filetype = Utils::mimes()->getExtension($file['type']);
23.
24. if ( $content == null ) {
25. echo (new Excp("未接收到文件", 502, ['_FILES'=>$_FILES]))->toJSON();
26. return; 
27. }
28.
29. $config = $GLOBALS['_QC']['cos'];
30. $cos = App::M('Cos',$config);
31. try {
32. $resp = $cos->upload( $content, ['region'=>$config['region' ], 'filetype'=>$filetype] );
33. } catch( Excp $e ){
34. $extra = $e->getExtra();
35. echo (new Excp("COS API 错误", 502, ['resp'=>$resp, 'e'=>$extra]))->toJSON();
36. return;
37. }
38. if ( $resp['code'] == 0) {
39. Utils::out($resp['data']);
40. return;
41. }
42. echo (new Excp("COS API 错误", 502, ['resp'=>$resp]))->toJSON();
43. return;
44.
45. }
46. }

第三步: 提交代码更新

代码语言:txt
AI代码解释
复制
1. git add *
2. git commit -m '+COS Upload {{pull}}' # {{pull}} feed 指令更新线上代码
3. git push

第四步: 登录云主机,运行测试

代码语言:txt
AI代码解释
复制
1. docker exec -it xpmjs-server /bin/bash # 进入容器
2. cd ~
3. wget http://wxapp-1252011659.file.myqcloud.com/4883017283.jpg
4. tdm app run /apps/xqcloud/controller/Cos.php upload --f='''{"wxfile":"4883017283.jpg"}''' --vv

四、实验结果

通过调用 COS 接口,掌握 RESTFul API 调用和调试的方法;通过封装图片上传接口,掌握RESTFul API 的封装方法。

如果你看了以上的文章觉得不过瘾。想要系统性学习如何在腾讯云上开发微信小程序,建议报名参加我们的TCCE微信开发课程培训:https://www.qcloud.com/training/courses/wx-dev

相关推荐

如何用Baas快速在腾讯云上开发小程序之系列2:搭建Phabricator开发管理平台

如何用Baas快速在腾讯云上开发小程序之系列4:实现客户侧商品列表、商品详情页程序

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
gin——使用腾讯云存储图片
一、腾讯云对象存储COS 1. 创建储存桶 然后直接下一步-创建即可。 2. API密钥创建 3. 查看代码中需要的东西 储存桶名称Bucket、所属地域Region 密钥APPID、SecretId、SecretKey 二、代码 1. 配置文件conf.toml 这里读取配置文件的第三方库是Viper,学习可以查看:viper库快速使用 将上面查看的几个值写入配置文件对应位置即可 [tencentCOS] # TencentCloud 腾讯云
传说之下的花儿
2023/04/16
9.7K1
gin——使用腾讯云存储图片
小程序开发:上传图片到腾讯云
使用对象存储服务 COS 时,可通过 RESTful API 对 COS 发起 HTTP 匿名请求或 HTTP 签名请求,对于签名请求,COS 服务器端将会进行对请求发起者的身份验证。
goodspeed
2020/12/22
16.1K0
小程序开发:上传图片到腾讯云
[php实现]通过腾讯云Api上传SSL证书
笔者使用的轻量应用服务器安装的Windows系统(集成环境没有更新证书功能),SSL证书是acme.sh生成的多域名证书,有效期90天。因为使用了腾讯云的CDN,每次生成新证书需要手动上传到腾讯云,太麻烦了。既然官方提供了上传证书的Api(UploadCertificate),服务器是php环境,就想用php撸个小工具,实现自动上传SSL证书到腾讯云。
TDP-苏苏
2022/03/01
9.7K0
[php实现]通过腾讯云Api上传SSL证书
对象储存cos-腾讯云对象储存cos
COS是腾讯云提供的对象存储服务,功能非常强大,可以作为文件服务器,CDN加速,静态网页服务,还提供了图片的常用操作。
张天华
2019/08/01
24.9K0
对象储存cos-腾讯云对象储存cos
腾讯云cos上传文件模板
# -*- coding=utf-8 # appid 已在配置中移除,请在参数 Bucket 中带上 appid。Bucket 由 BucketName-APPID 组成 # 1. 设置用户配置, 包括 secretId,secretKey 以及 Region # python3 安装 # pip3 install qcloud_cos_py3 # pip3 install cos-python-sdk-v5 from qcloud_cos import CosConfig from qcloud_cos
小小咸鱼YwY
2021/08/31
15.7K0
cos-临时签名生成(附php脚本)
"Authorization": "q-sign-algorithm=sha1&q-ak=AKID10FMMEmIr2rxFeNfqQtV10HpH416cyip&q-sign-time=1551940851;1551941451&q-key-time=1551940851;1551941451&q-header-list=&q-url-param-list=&q-signature=3d1ffe8e79d2aa4309e59499190a7757a8fbf648",
杜志强
2019/03/07
2.2K0
cos-临时签名生成(附php脚本)
Beego学习——腾讯云上传图片
一、腾讯云对象存储COS 1. 创建储存桶 然后直接下一步-创建即可。 2. API密钥创建 3. 查看代码中需要的东西 储存桶名称Bucket、所属地域Region 密钥APPID、SecretId、SecretKey 二、代码 1. 配置文件 app.conf 将上面查看的几个值写入配置文件对应位置即可 # TencentCloud 腾讯云 # 储存桶名称 COS_BUCKET_NAME = "" # 所属地域 COS_REGION =
传说之下的花儿
2023/04/16
7K0
Beego学习——腾讯云上传图片
【玩转腾讯云】Python 操作腾讯对象存储(COS)详细教程
django项目中,使用editormd时需要上传本地图片,使用到了腾讯对象存储,通过后台可以将图片上传到COS,由此记录一下。 <font color="red">想了解django中如何引入markdown编辑器可以参考此篇文章 --> django 中引入markdown编辑器</font> 1. 腾讯对象存储 1.1 开通服务 腾讯COS 开通后会赠送免费额度 1.2 后台 [watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9i
ruochen
2021/04/11
20K0
【玩转腾讯云】Python 操作腾讯对象存储(COS)详细教程
cos-临时密钥生成(附php脚本)
https://cloud.tencent.com/document/product/436/14048
杜志强
2019/03/07
3.6K3
cos-临时密钥生成(附php脚本)
腾讯云 COS 访问方法
签名即输入 SecretId、SecretKey、有效时间时间戳,原始请求,得到以下签名内容的过程:
dandelion1990
2024/01/02
1.6K0
腾讯云 COS 访问方法
Python 操作腾讯对象存储(COS)详细教程
django项目中,使用editormd时需要上传本地图片,使用到了腾讯对象存储,通过后台可以将图片上传到COS,由此记录一下。 <font color="red">想了解django中如何引入markdown编辑器可以参考此篇文章 --> django 中引入markdown编辑器</font> 1. 腾讯对象存储 1.1 开通服务 腾讯COS 开通后会赠送免费额度 1.2 后台 [pdf9xkzo3p.png] 1.3 创建桶 [8fwacun695.png] 1.4 上传文件及查看 上传文件 [ck2
ruochen
2021/01/17
7.2K1
Python 操作腾讯对象存储(COS)详细教程
腾讯云 cos Go SDK使用学习
参考资料 官方文档 官方示例 基本概念 Bucket(存储桶) 命名上,由存储桶名称(BucketName)和APPID两部分组成,中间以"-“相连,例如examplebucket-1250000000 存储桶具有着地域(region),对象存储允许用户在不同的地域上创建存储桶。 Object(对象) 存储桶上存储的内容称为对象,对象是对象存储(Cloud Object Storage, cos)的基本单元,包括对象键、对象值和对象元数据 对象键是对象在存储桶中的唯一标识,可以通俗理解为文件路径。 对象值
千灵域
2022/06/17
18.2K1
腾讯云 COS 文件 Web 直传
dandelion1990
2024/01/03
7900
如何在腾讯云COS部署HEXO博客
前段时间发现我的博客老是报456错误,而且国内速度加载越来越慢,不知道是什么问题,打算优化下。正在我查资料的时候,突然发现,腾讯云COS竟然支持静态网站部署了,卧槽,那我还放在Github Page干嘛,想办法迁移到国内吧!然后我再Hexo插件库发现了这么一个东西hexo-deployer-cos,有大神写了快速部署插件,说用就用,但是部署的时候踩了两三次坑,固写本文记录。本文域名将用www.test.com代替。
Techeek
2018/08/14
9K8
Java springboot项目引入腾讯云COS实现上传
此处给的为默认值,如需改变对应参数,需在application.properties中进行配置
六月的雨在Tencent
2024/03/28
1.1K0
使用腾讯云 COS 官方工具快速将本地数据迁移至 COS
本文主要介绍如何使用 COS 迁移工具将本地数据迁移至 COS,同时带来最新的生态活动,快来看看吧~ 腾讯云 COS 提供了多种同步迁移工具,如 COSCMD、COS Migration 和 COSBrowser 客户端等。 COS 提供的工具还都支持 Windows、Linux 和 macOS 系统,所以我们可以根据不同的环境可以选择适合的迁移工具。如果想操作图形界面,可以使用COSBrowser(https://cloud.tencent.com/document/product/436/11366)。
云存储
2022/08/26
1.7K0
使用腾讯云 COS 官方工具快速将本地数据迁移至 COS
自动构建 Hugo 博客部署至腾讯云对象存储 COS 并刷新 CDN
使用 Github Action,自动构建 Hugo 博客并部署至腾讯云 COS 静态存储,并触发 CDN 刷新。
慕阳MuYoung
2025/05/17
1980
自动构建 Hugo 博客部署至腾讯云对象存储 COS 并刷新 CDN
swiftui接入腾讯云对象存储cos
个人来说玩玩,还是用swiftui比较好,毕竟写界面的速度快很多,而且还比较直观。
用户4923333
2023/07/09
7130
腾讯云智能体开发平台 API 的开发实战:基于RAG的论文阅读助手
科研工作者,尤其是那些奋战在知识前沿的探索者们,正面临着信息洪流的巨大挑战。每天都有如潮水般涌来的学术论文,这既是机遇,也是重负。
Lion 莱恩呀
2025/03/02
5631
腾讯云智能体开发平台 API 的开发实战:基于RAG的论文阅读助手
腾讯云COS对象存储的简单使用
叮当哥之前买了一年的腾讯云服务器,昨日偶然发现腾讯云送了叮当哥半年的cos对象存储服务器,于是就撸起袖子传了几张珍藏的大图上去,现将其上传的简单使用步骤总结一波(其它操作参加官方SDK文档API)。
宋先生
2019/07/18
19.2K1
相关推荐
gin——使用腾讯云存储图片
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档