apicloud apicloud

注册
查看: 648|回复: 7

[模块教程] QCloudCOS 模块使用分享

官方版主

UID:791051

主题:
20
帖子:
21769
云币:
6538

[模块教程] QCloudCOS 模块使用分享

648 7 | 发表于 2019-12-2 10:48:31 |阅读模式 | |
QCloudCOS文档连接 https://docs.apicloud.com/Client-API/Open-SDK/QCloudCOS#getBucketLocation概述
QCloudCOS 封装了腾讯对象储存,对象存储(Cloud Object Storage,简称:COS)是腾讯云提供的一种存储海量文件的分布式存储服务,用户可通过网络随时存储和查看数据。腾讯云 COS 使所有用户都能使用具备高扩展性、低成本、可靠和安全的数据存储服务。
COS 通过控制台、 API、SDK 等多样化方式简单、快速地接入,实现了海量数据存储和管理。通过 COS 可以进行多格式文件的上传、下载和管理。腾讯云提供了直观的 Web 管理界面,同时遍布全国范围的 CDN 节点可以对文件下载进行加速。
使用此模块之前建议先配置 config.xml 文件,配置完毕,需通过云端编译生效,配置方法如下:
  • 名称:QCloudCOS
    • 参数:appID、secretKey、secretKey、isCAM、regionName、startDate、experationDate、token、serviceName、backgroundEnable、backgroundIdentifier、backgroundIn4GEnable、useHTTPS、isCOSServer、isCustomeCOSServer、customerKey
    • 配置示例:

<feature name="QCloudCOS">   <param name="appID" value="" />   <param name="secretId" value="" />   <param name="secretKey" value="" />   <param name="regionName" value="" />   <param name="serviceName" value="" />   <param name="isCAM" value=0 />   <param name="startDate" value="" />   <param name="experationDate" value="" />   <param name="token" value="" />   <param name="backgroundEnable" value=0 />   <param name="backgroundIdentifier" value="" />   <param name="backgroundIn4GEnable" value=0 />   <param name="useHTTPS" value=0 />   <param name="isCOSServer" value=0 />   <param name="isCustomeCOSServer" value=0 />   <param name="customerKey" value="" /> </feature>
  • 字段描述:
appID:(必须配置)APPID 如何获取
secretId:(必须配置)开发者拥有的项目身份识别 ID,用以身份认证 如何获取
secretKey:(必须配置)开发者拥有的项目身份密钥。可以为永久密钥,也可以是临时密钥(参考CAM系统) 如何获取
regionName:(必须配置)服务地域名称,可用的服务地域名称请查看官网中提供的地域,这里填入官网里提供的地域简称,例如ap-beijing-1等
serviceName:(可选项)服务的基础名称, 默认值为: myqcloud.com
isCAM:(可选项)是否使用CAM系统实现临时签名;0:否 1:是;默认:0
startDate:(可选项)签名有效期的起始时间(时间戳)。默认是设备的本地时间,如果传入起始时间,那么将以起始时间去计算签名,当您使用了CAM系统获取临时密钥的时候,需要设置该值,永久密钥设置该值无效
experationDate:(可选项)签名有效期截止的时间(时间戳),没有设置的话,默认是起始时间加十分钟,当您使用了CAM系统获取临时密钥的时候,需要设置该值,永久密钥设置该值无效
token:(可选项)当您使用了CAM系统获取临时密钥的时候,此值为必填项,代表回话的ID,永久密钥设置该值无效
backgroundEnable:(可选项)是否开启了后台传输;0:否 1:是;默认:0
backgroundIdentifier:(可选项)后台传输的标识
backgroundIn4GEnable:(可选项)是否在4G的网络下开启后台传输;0:否 1:是;默认:0
useHTTPS:(可选项)SDK是否支持https请求;0:否 1:是;默认:0
isCOSServer:(可选项)是否使用cos托管加密密钥的服务端加密(SSE-COS)保护数据;0:否 1:是;默认:0
isCustomeCOSServer:(可选项)是否使用客户提供的加密密钥的服务器端加密 (SSE-C)保护数据;isCustomeCOSServer优先级高于isCOSServer;0:否 1:是;默认:0
customerKey:(可选项)用户提供的密钥,传入一个32字节的字符串,支持数字、字母、字符的组合,不支持中文;注意:useHTTPS和isCustomeCOSServer必须为1
接入 CAM 系统实现临时签名
虽然在本地提供了永久的 SecretId 和 SecretKey 来生成签名的接口,但请注意,将永久的 SecretId 和 SecretKey 存储在本地是非常危险的行为,容易造成泄露引起不必要的损失。因此基于安全性的考虑,建议您在服务器端实现签名的过程。
推荐您在自己的签名服务器内接入腾讯云的 CAM(Cloud Access Manager,访问管理)来实现整个签名流程。
至于如何搭建签名服务器接入 CAM 系统,您可以参考移动应用直传实践
返回错误码说明
当 SDK 请求失败的时候,返回的 error 将不为空,并且包括了错误码、错误描述和其它一些调试必备的信息,以帮助开发者快速解决问题。返回错误码(封装在返回的error里)主要包括两类:设备本身因为网络原因等返回的错误码,以及 COS 返回的错误码。
对于设备本身因为网络原因产生的错误码,都是负数并且是四位数,例如-1001,这类错误码是苹果定义的,可以参考 NSURLError.h 头文件内的定义,或者是苹果官方文档说明
对于COS返回的错误码,是基于 HTTP 的状态码而来的,也就是404, 503这类。对于这类错误码,可以参考 COS 官方文档中关于错误码的说明寻求解决方案。
注意:本模块 iOS 平台上最低适配系统版本为 iOS 8.0
所有参数不可填空('')
对接口有任何不明之处可参考腾讯对象储存官方文档
登陆腾讯云开放平台获取
需要手机验证才能显示隐藏的SecretKey
创建自己的存储桶,https://cloud.tencent.com/document/product/436/6224 点击 控制台 进入
新建存储同时设置共有读写方便开发测试 ,正式环境为保证书数据安全请切换私有
运行截图

主要代码
  1. <!DOCTYPE html>
  2.   <html>
  3.   <head>
  4.       <meta charset="utf-8">
  5.       <meta name="viewport" content="maximum-scale=1.0,minimum-scale=1.0,user-scalable=0,width=device-width,initial-scale=1.0"/>
  6.       <title>title</title>
  7.       <link rel="stylesheet" type="text/css" href="../css/api.css"/>
  8.       <style>
  9.           body{

  10.           }
  11.           .main{
  12.             width: 100%;
  13.             height: 300px;
  14.             position: absolute;
  15.             bottom: 0;
  16.             padding: 10px;
  17.           }
  18.           button{
  19.             padding: 5px;
  20.             margin: 5px;
  21.             background-color: green;
  22.             color: #fff;
  23.             border-radius: 5px;
  24.           }
  25.       </style>
  26.   </head>
  27.   <body>
  28. <div class="main">
  29.   <button type="button" name="button" onclick="initQ()">初始化(Android)</button>
  30.   <button type="button" name="button" onclick="getServiceQ()">获取列表</button>
  31.   <button type="button" name="button" onclick="getBucketQ()">获取内容</button>
  32.   <button type="button" name="button" onclick="beginUploadQ()">上传图片</button>
  33.   <button type="button" name="button" onclick="getBucketACLQ()">存储桶ACLQ</button>
  34.   <button type="button" name="button" onclick="getBucketLocationQ()">存储桶地域</button>

  35. </div>
  36.   </body>
  37.   <script type="text/javascript" src="../script/api.js"></script>
  38.   <script type="text/javascript">
  39.   var QCloudCOS = null;
  40.       apiready = function(){
  41.         QCloudCOS= api.require('QCloudCOS');
  42.       };
  43.       function initQ() {
  44.         QCloudCOS.init();
  45.       }
  46.       function getServiceQ() {
  47.         QCloudCOS.getService(function(ret,err) {
  48.            alert(JSON.stringify(ret));
  49.         });
  50.       }
  51.       function getBucketQ() {
  52.         QCloudCOS.getBucket({
  53.            bucket:'yxw-1258819219' //.cos.ap-chengdu.myqcloud.com  /
  54.         },function(ret, err){
  55.           alert(JSON.stringify(ret));
  56.         });
  57.       }
  58.       function beginUploadQ() {
  59.         api.getPicture({
  60.             sourceType: 'library',
  61.             encodingType: 'jpg',
  62.             mediaValue: 'pic',
  63.             destinationType: 'url',
  64.             allowEdit: true,
  65.             quality: 50,
  66.             targetWidth: 100,
  67.             targetHeight: 100,
  68.             saveToPhotoAlbum: false
  69.         }, function(ret, err){
  70.             if(ret){
  71.                  //alert(JSON.stringify(ret));
  72.                  var pathQ = ret.data;
  73.                  console.log(pathQ);

  74.                  QCloudCOS.beginUpload({
  75.                     path:pathQ,
  76.                     bucket:'yxw-1258819219',
  77.                     object:'newPic'
  78.                     //grantFullControl:'id=\"qcs::cam::uin/1234560608:uin/1234560608\"'
  79.                  },function(ret, err){
  80.                    alert(JSON.stringify(ret));
  81.                  });
  82.             }else{
  83.                  alert(JSON.stringify(err));
  84.             }
  85.         });
  86.       }

  87.       function getBucketACLQ() {
  88.         QCloudCOS.getBucketACL({
  89.            bucket:'yxw-1258819219'
  90.         },function(ret, err){
  91.           alert(JSON.stringify(ret));
  92.         });
  93.       }

  94.       function getBucketLocationQ() {
  95.         QCloudCOS.getBucketLocation({
  96.           bucket:'yxw-1258819219'
  97.         },function(ret, err){
  98.           alert(JSON.stringify(ret));
  99.         });
  100.       }
  101.   </script>
  102.   </html>
复制代码
首次进入需要支付0.1 元,才可以进入
如有问题,点击回复追贴。




本帖子中包含更多资源    您需要 登录 才可以下载或查看,没有帐号?立即注册

版主

UID:9691

主题:
26
帖子:
937
云币:
1083
发表于 2019-12-2 11:34:50 |
赞一个

版主

UID:436609

主题:
37
帖子:
1783
云币:
7441

足球狗

发表于 2019-12-2 13:20:55 |
支持

版主

UID:546828

主题:
34
帖子:
4237
云币:
3030

圣诞节捣蛋鬼APICloud五岁啦

发表于 2019-12-2 13:35:23 |
感谢版主大大

驾校小白

UID:876143

主题:
2
帖子:
8
云币:
9
发表于 2020-6-15 12:49:26 |
求全部代码

官方版主

UID:791051

主题:
20
帖子:
21769
云币:
6538
 楼主| 发表于 2020-6-15 14:13:08 |

上面有的  直接复制  就是这个页面的代码

驾校小白

UID:876143

主题:
2
帖子:
8
云币:
9
发表于 2020-6-19 11:58:07 |
难道是我的配置有问题为什么没有效果,该填的都填啦哦  loader 也设置啦
<widget id="A6047689383926" version="0.0.1">

    <feature name="QCloudCOS">
        <param name="appID" value="1252。。。。。"/>
        <param name="secretId" value="AKIDY0JbfWd。。。。。"/>
        <param name="secretKey" value="。。。QKRMDspYBjBpXvCk6LTPXYL"/>
        <param name="regionName" value="ap-nanjing"/>
        <param name="serviceName" value="myqcloud.com"/>
        <param name="isCAM" value=0/>
        <param name="startDate" value=""/>
        <param name="experationDate" value=""/>
        <param name="token" value=""/>
        <param name="backgroundEnable" value=0/>
        <param name="backgroundIdentifier" value=""/>
        <param name="backgroundIn4GEnable" value=0/>
        <param name="useHTTPS" value=0/>
        <param name="isCOSServer" value=0/>
        <param name="isCustomeCOSServer" value=0/>
        <param name="customerKey" value=""/>
    </feature>

    <name>小白学习</name>

    <description>

        Example For APICloud.

    </description>

    <author email="developer@apicloud.com" href="http://www.apicloud.com">

        Developer

    </author>

    <content src="index.html"/>

    <access origin="*"/>

    <preference name="pageBounce" value="false"/>

    <preference name="appBackground" value="rgba(0,0,0,0.0)"/>

    <preference name="windowBackground" value="rgba(0,0,0,0.0)"/>

    <preference name="frameBackgroundColor" value="rgba(0,0,0,0.0)"/>

    <preference name="hScrollBarEnabled" value="false"/>

    <preference name="vScrollBarEnabled" value="false"/>

    <preference name="autoLaunch" value="true"/>

    <preference name="fullScreen" value="false"/>

    <preference name="autoUpdate" value="true"/>

    <preference name="smartUpdate" value="false"/>

    <preference name="debug" value="true"/>

    <preference name="statusBarAppearance" value="true"/>

    <permission name="readPhoneState"/>

    <permission name="camera"/>

    <permission name="record"/>

    <permission name="location"/>

    <permission name="fileSystem"/>

    <permission name="internet"/>

    <permission name="bootCompleted"/>

    <permission name="hardware"/>

</widget>

驾校小白

UID:876143

主题:
2
帖子:
8
云币:
9
发表于 2020-6-19 12:01:22 |
都配置好啦  loader也设置啦就是没有效果  感觉连接不上

<widget id="A6047689383926" version="0.0.1">

    <feature name="QCloudCOS">
        <param name="appID" value="1252。。。。"/>
        <param name="secretId" value="AKIDY0J。。。onsC4jGc9Vntr8IEBysb"/>
        <param name="secretKey" value="2HzVLlBRW。。。。PXYL"/>
        <param name="regionName" value="ap-nanjing"/>
        <param name="serviceName" value="myqcloud.com"/>
        <param name="isCAM" value=0/>
        <param name="startDate" value=""/>
        <param name="experationDate" value=""/>
        <param name="token" value=""/>
        <param name="backgroundEnable" value=0/>
        <param name="backgroundIdentifier" value=""/>
        <param name="backgroundIn4GEnable" value=0/>
   
   
   
您需要登录后才可以回帖 登录 | 立即注册

快速回复 返回顶部 返回列表