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

版权声明:本文由贺嘉  原创文章,转载请注明出处: 
文章原文链接:https://www.qcloud.com/community/article/640268001487425627

来源:腾云阁 https://www.qcloud.com/community

 

一、实验简介

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

二、实验目标

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

三、实验步骤

3.1 添加云应用

第一步: clone xqcloud 项目

1. cd <your project path>
2. git clone https://git.oschina.net/xpmjs/xqcloud.git xqcloud

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

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

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

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. } 

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

1. git add *
2. git commit -m '+COS Tryit {{pull}}' # {{pull}} feed 指令更新线上代码 3. git push 

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

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

1. docker exec -it xpmjs-server /bin/bash # 进入容器
2. tdm app run /apps/xqcloud/controller/Cos.php tryit # 运行测试

3.3 封装图片上传接口

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

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

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. } 

第三步: 提交代码更新

1. git add *
2. git commit -m '+COS Upload {{pull}}' # {{pull}} feed 指令更新线上代码 3. git push 

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

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

 

转载于:https://www.cnblogs.com/purpleraintear/p/6486163.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值