轻松实现微信小程序上传多文件/图片到腾讯云对象存储COS(免费额度)

news2025/6/9 23:44:12

概述

  • 对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,用户可通过网络随时存储和查看数据。
  • 个人账户首次开通COS可以免费领取50GB 标准存储容量包6个月(180天)的额度。
  • 本篇文章将详细介绍如何在微信小程序中使用对象存储sdk上传图片到腾讯云COS。

准备工作

初次使用 COS,建议您先了解以下基本概念:

  • 存储桶(Bucket):是对象的载体,可理解为存放对象的“容器”。一个存储桶可容纳无数个对象。
  • 对象(Object):是对象存储的基本单元,可理解为任何格式类型的数据,例如图片、文档和音视频文件等。
  • 地域(Region):是腾讯云托管机房的分布地区,对象存储 COS 的数据存放在这些地域的存储桶中。

快速入门

步骤 1-5都是前期准备(已完成的可以跳过),步骤6开始正式使用

步骤1:注册腾讯云账号

在使用腾讯云 COS 服务前,您需要先注册一个腾讯云账号。请单击下方按钮开始注册。(如果您已注册,请跳过该步骤。)

开始注册

步骤2:完成实名认证

账号注册完成后,使用该账号登录 腾讯云控制台,开始实名认证。详细操作指引请参见 实名认证介绍。(如果您已完成,请跳过该步骤。)

开始实名认证

步骤3:开通 COS 服务

在 腾讯云控制台 中,选择云产品 > 对象存储,进入 COS 控制台,按照界面提示开通 COS 服务。(如果您已开通,请跳过该步骤。)

开通 COS 服务
在这里插入图片描述

步骤4:创建存储桶

我们需要创建一个用于存放对象的存储桶:

  1. 在 对象存储控制台 左侧导航栏中单击存储桶列表,进入存储桶管理页。
  2. 单击创建存储桶,输入以下配置信息,其他配置保持默认即可。
    • 名称:输入存储桶名称。名称设置后不可修改。此处举例输入 examplebucket。
    • 所属地域:存储桶所属地域,选择与您业务最近的一个地区,例如广州地域。
    • 访问权限:存储桶访问权限,此处我们保持默认为“私有读写”。
  3. 单击创建,即可创建完成。

步骤5:获取密钥

在访问管理控制台中的 API 密钥管理 页面里获取 APPID,并创建 SecretId、SecretKey。
在这里插入图片描述

步骤6:在小程序中使用对象存储sdk

1. 安装 SDK

安装小程序 SDK 有两种方式:手动安装和 npm 安装,具体安装方法如下。

  • 手动安装
    复制源码文件中的 cos-wx-sdk-v5.js 到自己小程序代码根目录下任意路径,并用相对路径引用:
    在这里插入图片描述

(自己新建一个utils文件夹和cos-wx-sdk-v5.js文件)

var COS = require('./utils/cos-wx-sdk-v5.js')
  • npm 安装
    如果小程序代码使用了 webpack 打包,则通过 npm 安装依赖即可:
npm install cos-wx-sdk-v5

其中,程序代码使用 var COS = require('cos-wx-sdk-v5'); 进行引用;
我这里用的是手动安装的方法。

2. 开始使用

2.1 小程序域名白名单配置

小程序里请求 COS 需要登录到 微信公众平台,选择开发 > 开发设置 > 服务器域名,配置域名白名单。SDK 使用到了两个接口:

  1. cos.postObject 使用 wx.uploadFile 方法。
  2. 其他方法使用 wx.request 方法。

需要在对应白名单里,配置 COS 域名,白名单域名格式有两种:

  1. 如果是标准请求,可以配置存储桶域名作为白名单域名,例如:
    examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com
  2. 如果小程序使用的存储桶多,可以选择后缀式请求 COS,只需要在 SDK 实例化时传入ForcePathStyle: true,这种方式需要配置地域域名作为白名单,例如:cos.ap-guangzhou.myqcloud.com

在这里插入图片描述

在这里插入图片描述
把存储桶的访问域名加上
在这里插入图片描述

2.2 初始化

  • 引入
var COS = require('./utils/cos-wx-sdk-v5.js');
  • 初始化

通常情况下我们只需要创建一个 COS SDK 实例,然后在需要调用SDK方法的地方直接使用这个实例即可

var cos = new COS({
  ....
});

2.3 配置项

  • COS实例可以用多种配置项格式创建,官方列出的有4种(官方举例地址),前3种需要结合后端使用,也是官方比较推荐的使用方式。
  • 为了方便,我这里的方式是第四种:前端使用固定密钥计算签名,该格式适用于前端调试,若使用此格式,请避免泄露密钥
  • 这种方式无需结合后端使用,但比较不安全
// SECRETID 和 SECRETKEY 请登录 https://console.cloud.tencent.com/cam/capi 进行查看和管理
var cos = new COS({
    SecretId: 'SECRETID',
    SecretKey: 'SECRETKEY',
    SimpleUploadMethod: 'putObject', // 强烈建议,高级上传、批量上传内部对小文件做简单上传时使用putObject,sdk版本至少需要v1.3.0
});

2.4 上传到cos

wx.chooseMedia选择图片,cos.postObject把图片上传到腾讯云COS;
关键js代码:

 /* 选择文件,得到临时路径 */
    uploadImg: function () {

        var that = this;
        // chooseImage已停止维护,需使用chooseMedia选择上传
        wx.chooseMedia({
            count: 9,
            mediaType: ['image'],
            sizeType: ['original'],
            sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
            success(result) {
                console.log(result);
                that.setData({
                    imgList: result.tempFiles
                })
                // console.log(that.data.imgList);
            },

        })
    },
    // 上传到COS
    uploadIng: function () {

        for (var index in this.data.imgList) {
            var filePath = this.data.imgList[index].tempFilePath;
            var Key = filePath.substr(filePath.lastIndexOf('/') + 1); // 这里指定上传的文件名,不指定的话,上传不是图片格式
            cos.postObject({
                Bucket: '', //对象储存桶的名称
                Region: '', //所属地域
                Key: 'images/' + Key, // 存储在桶里的对象键(例如:1.jpg,a/b/test.txt)我这里是上传到存储桶上的images文件夹里
                FilePath: filePath,
                onProgress: function (info) {
                    console.log('进度条', JSON.stringify(info));
                }
            }, function (err, data) {
            // 这里我用的是回调函数的形式,也可以用promise方式
                if (err) {
                    console.log('上传失败', err);
                } else {
                    console.log('上传成功', data);
                }
            });
        }
    }

效果:

在这里插入图片描述
上传成功后,会返回图片地址
在这里插入图片描述
我们在控制台可以看到文件列表

  • 如果存储桶访问权限 为 公有读私有写,我们可以在浏览器输入这个地址,即可访问到这张图片。
    在这里插入图片描述
    在这里插入图片描述
  • 若是私有读写,则无法直接访问这个地址,需要通过调用cos.getObjectUrl 获取访问url

在这里插入图片描述

// 获取图片地址(在权限为私有读写情况下使用)
          cos.getObjectUrl({
            Bucket: '', //对象储存桶的名称
            Region: '', //所属地域
            Key: 'images/' + Key,
          }, function (err, data) {
            console.log('获取url',err || data);
          });

在这里插入图片描述
在这里插入图片描述

附:完整示例代码

关注公众号【richGirlyyy】,发消息:小程序图片云存储,即可获取demo源码;
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/334156.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

VBA提高篇_19 可选参数Optional_ IsMissing _MSgbox

文章目录1. 可选参数Optional2.IsMissing判断参数是否提供,只能判断变体类型3. 使用 : 可以按参数名传递参数 a:1,c:34.Msgbox 常用参数5.VBA颜色常量表1. 可选参数Optional Optional 代表本参数是可选项 False ; 代表参数若不指定,则默认为False Function mySumProduct(r As R…

2023年rabbitMq面试题汇总3(5道)

一、如何确保消息不丢失?消息持久化的前提是:将交换器/队列的durable属性设置为true,表示交换器/队列是持久交换器/队列,在服务器崩溃或重启之后不需要重新创建交换器/队列(交换器/队列会⾃动创建)。如果消…

【监控】Prometheus(普罗米修斯)监控概述

文章目录一、监控系统概论二、基础资源监控2.1、网络监控2.2、存储监控2.3、服务器监控2.4、中间件监控2.5、应用程序监控(APM)三、Prometheus 简介3.1、什么是 Prometheus3.2、优点3.3、组件3.4、架构3.5、适用于什么场景3.6、不适合什么场景四、数据模…

weston 2: 登录后直接启动weston配置

本人Kubuntu版本是22.04 名词:SDDM(SDDM - Arch Linux 中文维基)显示管理器 配置流程如下: 1.修改配置文件 a.配置.bashrc vim ~/.bashrc //以下内容删除 #export WLD$HOME/install #export LD_LIBRARY_PATH$WLD/lib/x86_64-…

使用IntelliJ IDEA搭建datax-web开发环境

记录:372场景:使用IntelliJ IDEA搭建datax-web开发环境,以及datax-web基本使用。版本:JDK 1.8Python 2.7.5datax-web开源地址:https://github.com/WeiYe-Jing/datax-web1.配置Maven环境1.1安装目录目录:D:\…

Spring6-基于XML自动装配

一、介绍自动装配:根据指定的策略,在IOC容器中匹配某一个bean,自动为指定的bean中所依赖的类类型或接口类型属性赋值二、创建controllerpackage com.wsy.auto.controller;import com.wsy.auto.service.UserService; import com.wsy.auto.serv…

应用于LSSVM对偶问题的张量列车卡尔曼滤波器的代码(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 ​ 💥1 概述 支持向量机是借助优化方法解决机器学习问题的新工具.近年来,支持向量机越来越受到人们的广泛关注,在其理论研究和算法实现方…

Vue拼图验证

vue-puzzle-verification 封装的一个用于登录验证的拼图的vue组件,使用了canvas画图和拖拽的一些技巧。支持大小、形状、图片、偏差、范围的自定义。 一、安装使用 npm install vue-puzzle-verification 二、main.js里引入 import PuzzleVerification from vue…

训练营day18

513.找树左下角的值 力扣题目链接(opens new window) 给定一个二叉树,在树的最后一行找到最左边的值。 示例 1: 示例 2: var findBottomLeftValue function(root) {let queue [root];let res root.val;while (queue.length) {let node queue.shift();if (nod…

Blender——烘培记录

参考链接:Blender2.8基础三:贴图烘培篇Blender 材质如何导出到 UE 和 Unity 里使用贴图烘焙打开【渲染属性】面板,把【渲染引擎】改为【Cycles】。把【设备】改为GPU计算,可以加快烘培速度。创建一个【图像纹理】节点(…

fastadmin后台表单文字过长,限制显示,鼠标悬停显示全部

问题&#xff1a;显示文字区域过长&#xff0c;影响用户体验感 解决措施&#xff1a; 特别注意&#xff1a; return "<span styledisplay: block;overflow: hidden;text-overflow: ellipsis;white-space: nowrap; title" row.contents ">" value …

ARM uboot源码分析1-启动第一阶段

一、start.S 引入 1、u-boot.lds 中找到 start.S 入口 (1) 在 C 语言中整个项目的入口就是 main 函数&#xff08;这是 C 语言规定的&#xff09;&#xff0c;所以譬如说一个有 10000 个.c 文件的项目&#xff0c;第一个要分析的文件就是包含了 main 函数的那个文件。 (2) 在…

分享75个JS焦点图代码,总有一款适合您

分享75个JS焦点图代码&#xff0c;总有一款适合您 75个JS焦点图代码下载链接&#xff1a;https://pan.baidu.com/s/1WuydBKN3eYd3H64lPXv0Fw?pwd0nq7 提取码&#xff1a;0nq7 Python采集代码下载链接&#xff1a;https://wwgn.lanzoul.com/iKGwb0kye3wj base_url "…

MySQL面试题:关系型数据库SQL和非关系型数据库NoSQL

文章目录一、四大非关系型数据库与关系型数据库的对比1. 关系型数据库2. 基于列的数据库3. 键值对存储4. 文档存储5. 图形数据库参考文章&#xff08;金文&#xff09;&#xff1a;四大非关系型数据库类型&#xff0c;你知道多少 参考文章&#xff1a;“行式存储”和“列式存储…

2022虎符CTF-WEB赛后复现

1、ezphp 参考Jacko师傅的这篇虎符CTF 写的已经很详细了&#xff0c;先简单梳理一下题目&#xff0c;题目与P师傅的这篇文章类似我是如何利用环境变量注入执行任意命令。简单来说就是不同的系统&#xff0c;他的system命令调用的命令不同。 php中调用system本质上是调用了sh…

UDP报文结构

UDP协议 基本特点&#xff1a;无连接、不可靠传输、面向数据报、全双工 UDP协议报文结构 &#xff0c;以下分别是种画法 对上图进行解释&#xff1a; UDP就会把载荷数据&#xff08;就通过UDP socket ,也就是send方法拿来的数据&#xff0c;基础上再在前面拼接上几个字节的…

appium ios真机自动化环境搭建运行(送源码)

appium ios真机自动化环境搭建&运行&#xff08;送源码&#xff09; 目录&#xff1a;导读 &#xff08;1&#xff09;安装JDK&#xff0c;并配置环境变量&#xff0c;方法如下&#xff1a; &#xff08;2&#xff09;安装Xcode、Xcode commandline tools和iOS模拟器 &…

如何判断反馈电路的类型-反馈类型-三极管

如何判断反馈电路的类型 反馈电路类型很多&#xff0c;可根据不同的标准分类&#xff1a; ①根据反馈的极性分&#xff1a;有正反馈和负反馈。 ②根据反馈信号和输出信号的关系分&#xff1a;有电压反馈和电流反馈。 ③根据反馈信号和输入信号的关系分&#xff1a;有串联反…

渗透测试 -- IP、端口信息收集

数据来源 01 IP信息收集 1&#xff09;IP反查域名 同IP网站查询&#xff0c;同服务器网站查询 - 站长工具 专业精准的IP库服务商_IPIP 2&#xff09;域名查询IP IP/IPv6查询&#xff0c;服务器地址查询 - 站长工具 或直接 ping 一下域名就会返回IP 3&#xff09;CDN 如…

补天平台安全问题收录情况分享记录

声明 本文是学习2017年上半年 补天平台漏洞收录分析报告. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 补天平台及补天白帽大会介绍 “补天平台”&#xff0c;成立于2013年3月&#xff0c;全称为“补天漏洞响应平台”。平台旨在收集散落在民间的安…