IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 腾讯COS例程实践之云函数列举COS文件 -> 正文阅读

[JavaScript知识库]腾讯COS例程实践之云函数列举COS文件

云函数列举COS文件

COS的操作文档以及API请看网页:https://cloud.tencent.com/document/product/436/64982
从云函数例子中选择这个模板创建工程:
在这里插入图片描述
创建步骤这里不细说,但是有一点很关键,就是云函数和cos的域必须一样,也就是所在地要一样:
在这里插入图片描述
在这里插入图片描述
这里主要是因为本例程使用到了触发器的缘故,如果没有触发器,那就不需要同区域了!
云函数代码修改如下:

/**************************************************
Nodejs8.9 - GetCosObject
TIPS: 
1. cos-nodejs-sdk-v5 do not support the use of promise and async/await

REFERENCE: 
1. https://cloud.tencent.com/document/product/436/12264 - COS-NODE-SDK documents
***************************************************/

const COS = require('cos-nodejs-sdk-v5')
const fs = require('fs')

// The cos authentication information
// 使用 cos 所需的鉴权/配置信息
const APPID = '13XXXX8232' // Replace it with your Appid, 请替换为您的腾讯云Appid
const SECRET_ID = 'AKIXXXXn7AxWt0sSlnZ4IHzRcW9WcRzHH0Sd' // Replace it with your SecretId, 请替换为您的 SecretId
const SECRET_KEY = 'wbz6XXXXc7LIyOXP0KNAgvta091cMp2y' // Replace it with your SecretKey, 请替换为您的 SecretKey
const REGION = 'ap-guangzhou' // Replace it with your bucket's region, 请替换为您bucket所在的地域

// Initialize cosSDK
const cosInst = new COS({
  SecretId: SECRET_ID,
  SecretKey: SECRET_KEY
})
// This part is used to solve cosSDK-getObjec do not support promise
// 暂时解决cosSDK-getObject不支持promise的问题
cosInst.getObjectPromise = function(params) {
  return new Promise((resolve, reject) => {
    cosInst.getObject(params, function(err, data) {
      if (err) {
        reject(err)
      } else {
        resolve(data)
      }
    })
  })
}
cosInst.getBuckets = function(params) {
  return new Promise((resolve, reject) => {
    cosInst.getBucket(params, function(err, data) {
      if (err) {
        reject(err)
      } else {
        resolve(data)
      }
    })
  })
}

exports.main_handler = async (event, context, callback) => {
  console.log('Start main handler')
  let promiseArr = []
  promiseArr.push(
    cosInst
      .getBuckets({
        Bucket: 'syXXXXXXXXvice-13XXXXXXXX2',  /* 填入您自己的存储桶,必须字段 */
        Region: 'ap-guangzhou',  /* 存储桶所在地域,例如ap-beijing,必须字段 */
        //Prefix: '*'           /* Prefix表示列出的object的key以prefix开始,非必须 */
      })
      .then(res => {
        console.log('getBuckets success1: ', res)
      })
      .catch(e => {
        throw (
          `Error getting object from bucket ${bucket}. Error message: ${JSON.stringify(
            e
          )}`
        )
      })
  )
  // /**
  //  * Ger original data from uploaded pictures and write them into temporary directory /tmp/
  //  * 从cos上传的图片中,获取元数据,并写入到临时目录/tmp/中
  //  */
  // for (let record of event['Records']) {
  //   const bucket = `${record['cos']['cosBucket']['name']}-${APPID}`
  //   let key = record['cos']['cosObject']['key']
  //   key = key.replace(`/${APPID}/${record['cos']['cosBucket']['name']}/`, '') // Ectract the name of picture, 抽取出图片的名称
  //   console.log('Key is: ', key)
  //   const downloadPath = `/tmp/${key}`
  //   promiseArr.push(
  //     cosInst
  //       .getObjectPromise({
  //         Bucket: bucket,
  //         Region: REGION,
  //         Key: key
  //       })
  //       .then(res => {
  //         fs.writeFileSync(downloadPath, res['Body'])
  //         console.log('Download file success: ', key)
  //       })
  //       .catch(e => {
  //         throw (
  //           `Error getting object ${key} from bucket ${bucket}. Error message: ${JSON.stringify(
  //             e
  //           )}`
  //         )
  //       })
  //   )
  //  }
  
  try {
    await Promise.all(promiseArr)
    return 'Success'
  } catch(e) {
    console.log(e)
    return 'Fail'
  }

这时候如果在COS上传一个图片,可以看到云函数这里有如下日志:
在这里插入图片描述
START RequestId: e1651c55-2d82-4d3b-9c49-9eb744dec6eeInit Report RequestId: e1651c55-2d82-4d3b-9c49-9eb744dec6ee Coldstart: 440ms (PullCode: 93ms InitRuntime: 6ms InitFunction: 341ms) Memory: 128MB MemUsage: 28.12MB2022-03-11T09:26:31.867Z e1651c55-2d82-4d3b-9c49-9eb744dec6ee Start main handler
2022-03-11T09:26:31.942Z e1651c55-2d82-4d3b-9c49-9eb744dec6ee getBuckets success1: { Name: ‘XXXXXXXX’,
Prefix: ‘’,
Marker: ‘’,
MaxKeys: ‘1000’,
IsTruncated: ‘false’,
Contents:
[ { Key: ‘bom - 副本 (2).png’,
LastModified: ‘2022-03-11T08:42:28.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (3).png’,
LastModified: ‘2022-03-11T08:44:29.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (4).png’,
LastModified: ‘2022-03-11T08:46:03.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (5).png’,
LastModified: ‘2022-03-11T08:53:04.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (6).png’,
LastModified: ‘2022-03-11T09:01:17.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (7).png’,
LastModified: ‘2022-03-11T09:03:08.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (8).png’,
LastModified: ‘2022-03-11T09:05:11.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (9).png’,
LastModified: ‘2022-03-11T09:26:30.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom.png’,
LastModified: ‘2022-03-11T08:35:03.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘子板BOM确定清单.png’,
LastModified: ‘2022-03-11T08:40:34.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ } ],
CommonPrefixes: [],
statusCode: 200,
headers:
{ ‘content-type’: ‘application/xml’,
‘content-length’: ‘3423’,
connection: ‘close’,
date: ‘Fri, 11 Mar 2022 09:26:31 GMT’,
server: ‘tencent-cos’,
‘x-cos-bucket-region’: ‘ap-guangzhou’,
‘x-cos-request-id’: ‘NjIyYjE1YzdfYzcyZjJjMGJfNGYxYV9mNzdkNGEy’ } }
Response RequestId:e1651c55-2d82-4d3b-9c49-9eb744dec6ee RetMsg:“Success”
END RequestId:e1651c55-2d82-4d3b-9c49-9eb744dec6ee
Report RequestId:e1651c55-2d82-4d3b-9c49-9eb744dec6ee Duration:80ms Memory:128MB MemUsage:30.275459MB
其实经过上面代码的修改,并不需要触发器就可以直接测试运行代码了,测试运行代码打印的log如下:

Invoke function GetCOSObject-1646965787 [RequestId:b269d9b3-b886-47d9-a01b-6e14a0910557]
Response:
“Success”
Output:
START RequestId: b269d9b3-b886-47d9-a01b-6e14a0910557
Event RequestId: b269d9b3-b886-47d9-a01b-6e14a0910557
2022-03-11T09:37:45.822Z b269d9b3-b886-47d9-a01b-6e14a0910557 Start main handler
2022-03-11T09:37:45.896Z b269d9b3-b886-47d9-a01b-6e14a0910557 getBuckets success1: { Name: ‘XXXXXXXX’,
Prefix: ‘’,
Marker: ‘’,
MaxKeys: ‘1000’,
IsTruncated: ‘false’,
Contents:
[ { Key: ‘bom - 副本 (2).png’,
LastModified: ‘2022-03-11T08:42:28.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (3).png’,
LastModified: ‘2022-03-11T08:44:29.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (4).png’,
LastModified: ‘2022-03-11T08:46:03.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (5).png’,
LastModified: ‘2022-03-11T08:53:04.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (6).png’,
LastModified: ‘2022-03-11T09:01:17.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (7).png’,
LastModified: ‘2022-03-11T09:03:08.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (8).png’,
LastModified: ‘2022-03-11T09:05:11.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom - 副本 (9).png’,
LastModified: ‘2022-03-11T09:26:30.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘bom.png’,
LastModified: ‘2022-03-11T08:35:03.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ },
{ Key: ‘子板BOM确定清单.png’,
LastModified: ‘2022-03-11T08:40:34.000Z’,
ETag: ‘“8d84c71801e6fb4b6dba4de0759f5bce”’,
Size: ‘4101709’,
Owner: [Object],
StorageClass: ‘STANDARD’ } ],
CommonPrefixes: [],
statusCode: 200,
headers:
{ ‘content-type’: ‘application/xml’,
‘content-length’: ‘3423’,
connection: ‘close’,
date: ‘Fri, 11 Mar 2022 09:37:45 GMT’,
server: ‘tencent-cos’,
‘x-cos-bucket-region’: ‘ap-guangzhou’,
‘x-cos-request-id’: ‘NjIyYjE4NjlfZDcyZjI3MGJfZjUzYl9kYjlhZWEz’ } }

END RequestId: b269d9b3-b886-47d9-a01b-6e14a0910557
Report RequestId: b269d9b3-b886-47d9-a01b-6e14a0910557 Duration:79ms Memory:128MB MemUsage:30.8274MB
Summary:
Request ID: b269d9b3-b886-47d9-a01b-6e14a0910557
Run Duration: 79
Bill Duration: 79
Usage Memory: 30.827438354492188
Invoke Result: 0
效果和触发器触发的一样!

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-12 17:23:13  更:2022-03-12 17:25:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 6:26:47-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码