当前位置: 首页 > news >正文

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

概述

  • 对象存储(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);},})},// 上传到COSuploadIng: 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源码;
在这里插入图片描述

相关文章:

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

概述 对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,用户可通过网络随时存储和查看数据。个人账户首次开通COS可以免费领取50GB 标准存储容量包6个月(180天)的额度。…...

Golang中defer和return的执行顺序 + 相关测试题(面试常考)

参考文章: 【Golang】defer陷阱和执行原理 GO语言defer和return 的执行顺序 深入理解Golang defer机制,直通面试 面试富途的时候,遇到了1.2的这个进阶问题,没回答出来。这种题简直是 噩梦\color{purple}{噩梦}噩梦,…...

谁说菜鸟不会数据分析,不用Python,不用代码也轻松搞定

作为一个菜鸟,你可能觉得数据分析就是做表格的,或者觉得搞个报表很简单。实际上,当前有规模的公司任何一个岗位如果没有数据分析的思维和能力,都会被淘汰,数据驱动分析是解决日常问题的重点方式。很多时候,…...

php mysql保健品购物商城系统

目 录 1 绪论 1 1.1 开发背景 1 1.2 研究的目的和意义 1 1.3 研究现状 2 2 开发技术介绍 2 2.1 B/S体系结构 2 2.2 PHP技术 3 2.3 MYSQL数据库 4 2.4 Apache 服务器 5 2.5 WAMP 5 2.6 系统对软硬件要求 6 …...

Vue3电商项目实战-首页模块6【22-首页主体-补充-vue动画、23-首页主体-面板骨架效果、4-首页主体-组件数据懒加载、25-首页主体-热门品牌】

文章目录22-首页主体-补充-vue动画23-首页主体-面板骨架效果24-首页主体-组件数据懒加载25-首页主体-热门品牌22-首页主体-补充-vue动画 目标: 知道vue中如何使用动画,知道Transition组件使用。 当vue中,显示隐藏,创建移除&#x…...

linux 使用

一、操作系统命令 1、版本命令:lsb_release -a 2、内核命令:cat /proc/version 二、debian与CentOS区别 debian德班和CentOS是Linux里两个著名的版本。两者的包管理方式不同。 debian安装软件是用apt(apt-get install),而CentOS是用yum de…...

基于遗传算法的微电网调度(风、光、蓄电池、微型燃气轮机)(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清…...

方向导数与梯度下降

文章目录方向角与方向余弦方向角方向余弦方向导数定义性质梯度下降梯度下降法(Gradient descent)是一个一阶最优化算法,通常也称为最速下降法。 要使用梯度下降法找到一个函数的局部极小值,必须向函数上当前点对应梯度&#xff08…...

Java岗面试题--Java基础(日积月累,每日三题)

目录面试题一:Java中有哪些容器(集合类)?追问:Java中的容器,线程安全和线程不安全的分别有哪些?面试题二: HashMap 的实现原理/底层数据结构? JDK1.7 和 JDK1.8追问一&am…...

java基础—Volatile关键字详解

java基础—Volatile关键字详解 文章目录java基础—Volatile关键字详解并发编程的三大特性:volatile的作用是什么volatile如何保证有可见性volatile保证可见性在JMM层面原理volatile保证可见性在CPU层面原理可见性问题的例子volatile如何保证有序性单例模式使用volat…...

内存检测工具Sanitizers

Sanitizers介绍 Sanitizers 是谷歌开源的内存检测工具,包括AddressSanitizer、MemorySanitizer、ThreadSanitizer、LeakSanitizer。 Sanitizers是LLVM的一部分。 gcc4.8:支持Address和Thread Sanitizer。 gcc4.9:支持Leak Sanitizer和UBSani…...

Triton : OpenAI 开发的用于Gpu开发语言

Triton : OpenAI 开发的用于Gpu开发语言https://openai.com/blog/triton/1、介绍 https://openai.com/blog/triton/ 2、git地址 https://github.com/openai/triton 3、论文 http://www.eecs.harvard.edu/~htk/publication/2019-mapl-tillet-kung-cox.pdf SIMD : Single Inst…...

Python文件操作-代码案例

文章目录文件打开文件open写文件上下文管理器第三方库简单应用案例使用python生成二维码使用python操作excel程序员鼓励师学生管理系统文件 变量就在内存中,文件在硬盘中. 内存空间更小,访问速度快,成本贵,数据容易丢失,硬盘空间大,访问慢,偏移,持久化存储. \\在才是 \的含义…...

活动目录(Active Directory)管理,AD自动化

每个IT管理员几乎每天都在Active Directory管理中面临许多挑战,尤其是在管理Active Directory用户帐户方面。手动配置用户属性非常耗时、令人厌烦且容易出错,尤其是在大型、复杂的 Windows 网络中。Active Directory管理员和IT经理大多必须执行重复和世俗…...

Allegro如何使用Vertext命令修改丝印线段的形状操作指导

Allegro如何使用Vertext命令修改丝印线段的形状操作指导 在用Allegro画丝印线段的时候,如果画了一段不是自己需要形状的线段,无需删除重画,可以用Vertext命令直接编辑 如下图 修改前 修改后 具体操作如下 选择Edit...

Leetcode力扣秋招刷题路-0030

从0开始的秋招刷题路,记录下所刷每道题的题解,帮助自己回顾总结 30. 串联所有单词的子串 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。…...

基于Prometheus和k8s搭建监控系统

文章目录1、实验环境2、Prometheus介绍?3、Prometheus特点3.1 样本4、Prometheus组件介绍5、Prometheus和zabbix对比分析6、Prometheus的几种部署模式6.1 基本高可用模式6.2 基本高可用远程存储6.3 基本HA 远程存储 联邦集群方案7、Prometheus的四种数据类型7.1 C…...

类和对象(下)

类和对象(下)再谈构造函数构造函数体赋值初始化列表explicit关键字static成员静态成员的特性友元友元函数友元类成员函数做友元内部类匿名对象编译器的一些优化再谈构造函数 构造函数体赋值 在创建对象的时候编译器会调用构造函数给对象中的成员变量一…...

达梦数据库单机部署

一、安装前准备 1. 安装环境 操作系统:redhat7.9 达梦数据库版本:V8 内存:2G CPU:x86_64 2. 新建用户组和用户 groupadd dinstall useradd -g dinstall -m -d /home/dmdba -S /bin/bash dmdba passwd dmdba3. 配置参数 vi /etc/security/limits.conf #在末尾添加以下内…...

从零到一学习Flutter——(二)状态和路由

背景 前文提到了Widget的状态,在Flutter中一切都是Widget,那么由Widget组成的页面,会有很多复杂的父子关系,要想交互友好,则需要这些Widget进行通讯,也就是所谓的状态管理。 同时在了解了布局之后,我们会写出很多的页面,那么在这些页面切换,也是一个很重要的能力。 …...

TC358774XBG/TC358775XBG替代方案|CS5518替代TC358774XBG/TC358775XBG设计DSI转LVSD设计资料

TC358774XBG/TC358775XBG替代方案|CS5518替代TC358774XBG/TC358775XBG设计DSI转LVSD设计资料 TC358774XBG/TC358775XBG 芯片的主要功能是作为 DSI - LVDS 通信协议桥接,主芯片的视频数据可通过 DSI 链路流 出,以驱动兼容 LVDS 的显示板。换句话说&#x…...

Linux---Kernal与Shell讲解

目录 Shell简介 什么是Shell Shell分类 内核Kernal Shell简介 什么是Shell 我们首先需要知道一台完整的计算机是由硬件组成的,而人不可以直接与硬件交互,为了完成交互,进行了以下的操作 将硬件设备交由内核管理,给硬件套个内…...

Thiol-PEG-Acid,HS-PEG-COOH,巯基-聚乙二醇-羧基试剂供应

一:产品描述 1、名称 英文:HS-PEG-COOH,Thiol-PEG-Acid 中文:巯基-聚乙二醇-羧基 2、CAS编号:N/A 3、所属分类:Carboxylic acid PEG Thiol PEG 4、分子量:可定制,Thiol-聚乙二…...

数据结构与算法基础-学习-09-线性表之栈的理解、初始化顺序栈、判断顺序栈空、获取顺序栈长度的实现

一、个人理解栈是线性表的一种衍生,和之前的顺序表和链表在插入和删除元素上有较大差异,其他基本相同,栈是数据只能插入表的尾部(栈顶),删除数据时只能删除表的尾部(栈顶)数据&#…...

深入Kafka核心设计与实践原理读书笔记第二章

1 生产者 生产逻辑 配置生产者客户端参数及创建相应的生产者实例。构建待发送的消息。发送消息关闭实列 参数说明 bootstrap.servers :用来指定生产者客户端链接Kafka集群搜需要的broker地址清单,具体格式 host1:port1,host2:port2,可以设置一个或多…...

知乎kol投放怎么做?知乎kol资源从哪里找?

每个领域都有一些比较专业且具有话语权的大V博主,他们推荐某个产品或是品牌就能对粉丝产生很深的影响力,影响用户消费决策。 互联网时代,每个热门的内容平台上都活跃着一大批kol博主,做kol投放具有很高的商业价值。 知乎内容社区…...

python设计模式-享元设计模式,抽象工厂设计模式,面向对象设计模式

享元设计模式 享元(flyweight)设计模式属于结构设计模式类别。 它提供了一种减少对象数的方法。 它包含各种有助于改进应用程序结构的功能。享元对象最重要的特性是不可变的。 这意味着一旦构建就不能修改它们。 该模式使用HashMap来存储引用对象 如何实现享元(flyweight)设计…...

10条终身受益的Salesforce职业发展建议!

Salesforce这个千亿美金巨兽,在全球范围内有42,000多名员工。作为一家发展迅速的科技公司,一直在招聘各种角色,包括销售、营销、工程师和管理人员等。 据IDC估计,从2016年到2020年,该生态系统创造了190万个工作岗位。…...

电子科技大学人工智能期末复习笔记(四):概率与贝叶斯网络

目录 前言 概率 概率公式 贝叶斯公式 链式条件概率 例题 1. 求联合概率分布/边缘概率分布/条件概率分布 2. 灵活运用贝叶斯公式 概率总结 贝叶斯网络 判断独立性 两个事件独立的判断 条件独立性的判断 假设条件独立的链式法则 ⚠Active / Inactive Paths 判断独…...

码上掘金实现电子木鱼

前言 前几天在朋友圈看到“敲电子木鱼”的视频,敲一下木鱼就提示“功德 1”,还带有敲击声和念经的声音,感觉挺有意思的。 心血来潮,捣鼓了一晚上,借助码上掘金实现了这个功能。 展示效果 素材 准备素材如下&#…...

郑州营销型网站制作教程/广安seo外包

目录导入sql文件navicat中直接导入mysql shell中导入linux shell中导入导出sql文件navicat导出sql文件linux shell中导入sql文件导入sql文件 一份写好的sql文件,包括建表语句和执行语句 navicat中直接导入 导入成功 mysql shell中导入 将 .sql文件放入xshell目…...

做网站接活全流程/网站推广多少钱

VLAN(Virtual Local Area Network)虚拟局域网一种将局域网内的设备通过逻辑地划分成为一个个网段来进行管理的技术VLAN是建立在物理网络基础上的一种逻辑子网,因此建立VLAN需要相应的支持VLAN技术的网络设备当网络中的不同VLAN间进行相互通信…...

拖拽式建站源码/网络营销最主要的工具是

面向对象设计的过程就是抽象的过程,一般分为三步: (1)发现类,类定义了 对象将会用用的特征(属性)和行为(方法)。 (2)发现类的属性,对象…...

wordpress 小手枪图标/石家庄seo关键词

Hadoop 生产调优HDFS—核心参数NameNode 内存生产配置NameNode 内存计算Hadoop2.x 系列, 配置 NameNode 内存Hadoop3.x 系列,配置 NameNode 内存NameNode 心跳并发配置开启回收站配置回收站工作机制开启回收站功能参数说明查看回收站HDFS—集群压测测试 …...

做h5最好的网站/企业seo顾问服务阿亮

我正在使用PHP的“simplexml_load_file”从Flickr获取一些数据.我的目标是获取照片网址.我能够得到以下值(分配给PHP变量):codewrecker posted a photo:我怎样才能提取它的这一部分?http://farm3.static.flickr.com/2298/2302759205_4fb109f367_m.jpg万一…...

wordpress自动生成页面插件/引流推广方法

简介在CentOS 7、CentOS 8 中都是使用systemd管理服务了。对于我们自己编译安装的nginx服务,默认是没有systemd的服务管理文件,可以手动创建一个就可以了。 创建service文件vim /usr/lib/systemd/system/nginx.service[Unit]DescriptionThe Nginx HTTP S…...