Golang将图片存入腾讯云对象存储COS并获取图片访问链接

Go语言接入腾讯云存储COS 最近做项目需要用到云存储来保存用户的头像图片,刚好看到腾讯云的COS(云对象存储)有六个月50G空间的免费额度,于是选用了腾讯云,稍微折腾一番后成功使用Go语言接入到COS。 在折腾的过程中,发现此类博客较少,其中很多都是从官方文档抄过来的长篇大论。所以最后还是看官方文档去了。 相信很多人在查资料的过程中,想要的只是一份开箱即用的代码,能够上传和下载文件即可(比如我自己:)。 于是,我决定不要长篇大论,在博客开头先贴上代码~~~: package main import ( "context" "fm 阅读详情

准备工作

首先要开通腾讯云对象存储COS服务

 创建存储桶

 进入存储桶在概览页面获取访问

拿到自己的SecretID和SecretKey

 最后把存储桶的访问权限改为共有读私有写

使用Golang代码上传图片并返回图片访问链接

首先创建一个访问路由

package main

import (
	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	r.POST("saveImageToCos", SaveImageToCos)
	r.Run(":8081")
}
func SaveImageToCos(c *gin.Context) {

}

从请求中获取图片的数据流

package main

import (
	"github.com/gin-gonic/gin"
)

func main() {
	r := gin.Default()
	r.POST("saveImageToCos", SaveImageToCos)
	r.Run(":8081")
}
func SaveImageToCos(c *gin.Context) {
	//获取图片数据流
	file, _ := c.FormFile("image")

}

设置SecretID,SecretKey和访问域

package main

import (
	"github.com/gin-gonic/gin"
	"github.com/tencentyun/cos-go-sdk-v5"
	"net/http"
	"net/url"
)

func main() {
	r := gin.Default()
	r.POST("saveImageToCos", SaveImageToCos)
	r.Run(":8081")
}
func SaveImageToCos(c *gin.Context) {
	//获取图片数据流
	file, _ := c.FormFile("thumbnail")
	//创建cos客户端并设置SecretID,SecretKey和访问域名
	u, _ := url.Parse("这里填写自己的访问域名")
	b := &cos.BaseURL{BucketURL: u}
	a := cos.NewClient(b, &http.Client{
		Transport: &cos.AuthorizationTransport{
			SecretID:  "这里填写自己的SecretID",
			SecretKey: "这里填写自己的SecretKey",
		},
	})
}

设置在存储桶保存的地址,不存在的文件夹,cos会自动创建文件夹

package main

import (
	"github.com/gin-gonic/gin"
	"github.com/tencentyun/cos-go-sdk-v5"
	"net/http"
	"net/url"
)

func main() {
	r := gin.Default()
	r.POST("saveImageToCos", SaveImageToCos)
	r.Run(":8081")
}
func SaveImageToCos(c *gin.Context) {
	//获取图片数据流
	file, _ := c.FormFile("thumbnail")
	//创建cos客户端并设置SecretID,SecretKey和访问域名
	u, _ := url.Parse("这里填写自己的访问域名")
	b := &cos.BaseURL{BucketURL: u}
	a := cos.NewClient(b, &http.Client{
		Transport: &cos.AuthorizationTransport{
			SecretID:  "这里填写自己的SecretID",
			SecretKey: "这里填写自己的SecretKey",
		},
	})
	//设置保存在存储桶中的文件地址,我保存到askhub文件夹下,命名为图片名
	name := "askhub/" + file.Filename
}

打开文件并向腾讯云COS上传图片

package main

import (
	"context"
	"github.com/gin-gonic/gin"
	"github.com/tencentyun/cos-go-sdk-v5"
	"net/http"
	"net/url"
)

func main() {
	r := gin.Default()
	r.POST("saveImageToCos", SaveImageToCos)
	r.Run(":8081")
}
func SaveImageToCos(c *gin.Context) {
	//获取图片数据流
	file, _ := c.FormFile("thumbnail")
	//创建cos客户端并设置SecretID,SecretKey和访问域名
	u, _ := url.Parse("这里填写自己的访问域名")
	b := &cos.BaseURL{BucketURL: u}
	a := cos.NewClient(b, &http.Client{
		Transport: &cos.AuthorizationTransport{
			SecretID:  "这里填写自己的SecretID",
			SecretKey: "这里填写自己的SecretKey",
		},
	})
	//设置保存在存储桶中的文件地址,我保存到askhub文件夹下,命名为图片名
	name := "askhub/" + file.Filename
	//打开文件,并向腾讯云COS上传图片
	f, _ := file.Open()
	a.Object.Put(context.Background(), name, f, nil)
}

 获取图片链接

上传到cos的图片访问连接我们可以自己拼接出

使用存储桶的访问域名加上图片在存储桶中的地址

package main

import (
	"context"
	"github.com/gin-gonic/gin"
	"github.com/tencentyun/cos-go-sdk-v5"
	"net/http"
	"net/url"
)

func main() {
	r := gin.Default()
	r.POST("saveImageToCos", SaveImageToCos)
	r.Run(":8081")
}
func SaveImageToCos(c *gin.Context) {
	//获取图片数据流
	file, _ := c.FormFile("thumbnail")
	//创建cos客户端并设置SecretID,SecretKey和访问域名
	u, _ := url.Parse("这里填写自己的访问域名")
	b := &cos.BaseURL{BucketURL: u}
	a := cos.NewClient(b, &http.Client{
		Transport: &cos.AuthorizationTransport{
			SecretID:  "这里填写自己的SecretID",
			SecretKey: "这里填写自己的SecretKey",
		},
	})
	//设置保存在存储桶中的文件地址,我保存到askhub文件夹下,命名为图片名
	name := "askhub/" + file.Filename
	//打开文件,并向腾讯云COS上传图片
	f, _ := file.Open()
	a.Object.Put(context.Background(), name, f, nil)
    //拼接图片地址,并响应链接地址
	imagePath := "这里填写自己的访问域名"+"/" + name
	c.String(http.StatusOK, "图片链接:%s", imagePath)
	return
}


以上就是使用Golang上传图片到COS并获取图片访问链接的所有内容

如果感觉这篇文章对你有帮助,不防点个赞吧!!!

对象存储 对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,具有高扩展性、低成本、可靠安全等优点。通过控制台、API、SDK 和工具等多样化方式,用户可简单、快速地接入 COS,进行多格式文件的上传、下载和管理,实现海量数据存储和管理。 产品概述 本页目录:​​对象存储(Cloud Object Storage,COS)是腾讯云提供的一种存储海量文件的分布式存储服务,用户可通过网络随时存储和查看数据。腾讯云 COS 使所有用户都能使用具备高扩展性、低成.. 阅读详情

相关推荐

go-cos:腾讯云对象存储服务 COS(Cloud Object Storage) Go SDK(XML API)

go-cos 腾讯云对象存储服务 COS(Cloud Object Storage) Go SDK(API 版本:V5 版本的 XML API)。 Install go get -u github.com/mozillazg/go-cos 推荐使用 之类的技术指定使用的 go-cos 包版本号。 Usage package main import ( "context" "fmt" "io/ioutil" "net/http" "net/url" "os" "github.com/mozillazg/go-cos" ) func main() { b, _ := cos.NewBaseURL("https://<bucket>-<appid>.cos.<region>.myqcloud.com") c := cos.NewClient(b, &http.Client{

golang---腾讯云COS对象存储V5(图片)操作

golang+cos

IT艺术家-rookie的博客 1110

HPE磁盘阵列管理04——MSA事件

本文介绍了HPE MSA存储系统的事件处理机制,重点分析了常见磁盘故障事件及其解决方案。文章首先定义了MSA事件的五个严重级别(严重、错误、警告、信息和解决),然后详细列举了多个典型事件案例(如事件1、3、6、8、172等),包括每种事件的触发条件、对系统的影响以及具体修复步骤。针对磁盘故障场景,文章提供了更换磁盘、重建磁盘组、取消隔离等操作建议,并强调应及时配置备用磁盘以降低数据风险。最后指出更详细的事件说明可参考《MSA事件描述参考指南》,并提供了HPE官方手册下载链接。全文为技术人员处理MSA存储故障

istrangeboy&begin zero的博客 1118

【golang】go获取腾讯云cos对象存储 并转为base64字符串输出

【golang】go获取腾讯云cos对象存储 并转为base64字符串输出

CTRA®王大大技术中心 1359

Qt Creator设计器里也能拖拽?5步将你的QML自定义控件变成可视化插件(Qt6.5+)

本文详细介绍了如何在Qt Creator设计器中实现QML自定义控件的可视化拖拽功能(Qt6.5+)。通过5个步骤,从构建可插件化的QML控件基础到部署插件到设计器环境,帮助开发者将自定义控件转化为设计器插件,提升团队协作效率。特别适合需要频繁调整UI样式的开发场景。

weixin_29214559的博客 170

【Linux 驱动开发】STM32MP1 LCD 显示系统完整实践指南

STM32MP1 LCD显示系统实践指南 本文全面介绍STM32MP1平台实现MIPI DSI LCD显示的完整流程,涵盖硬件连接、设备树配置、显示原理和驱动实现。主要内容包括: 硬件连接:详细说明MIPI DSI差分对、背光PWM、复位/供电管脚的连接方式 设备树配置: PWM背光控制节点设置 LTDC与DSI端口映射关系 Panel节点参数定义 显示基础:讲解LCD/OLED显示原理、常见接口类型(RGB/LVDS/MIPI/HDMI)及信号时序 驱动实现。

猫猫的小茶馆 493

腾讯云-对象存储服务(COS)的使用总结-JavaScript篇

本文主要介绍了对象存储快速入门,列举了客户端在拿到临时密钥后,如何进行后续的COS API操作,本文暂时只举例了存储的操作,至于其他的COS接口调用,调用方法类似,我们不再赘述。

流子的专栏 2355

华为C语言笔试题(附答案)

华为C语言笔试题(附答案)     1、局部变量能否和全局变量重名?   答:能,局部会屏蔽全局。要用全局变量,需要使用 ":: "   局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内。  

峰云四起 3031

[golang gin框架] 19.Gin 图片上传到云服务器(腾讯云,阿里云)

Gin 图片上传到云服务器(腾讯云,阿里云)

资深系统架构,深耕高并发研发与 AI 大模型工程化落地。技术栈以 Python (AI/NLP/RAG/Agent) 与 Golang (高并发架构) 为双核心,兼具 PHP 大型应用经验。专注算法落地、复杂系统设计及团队技术赋能 1237

element的el-cascader组件动态加载,以及报错处理问题

Blocked aria-hidden on an element because its descendant retained focus. The focus must not be hidden from assistive technology users. 报错处理

weixin_56527169的博客 1262

2026年数学建模国赛论文排版规范:Word与LaTeX终极对比及模板

提前演练:不要等到比赛开始才第一次使用排版工具。至少在赛前一个月完成1-2篇模拟论文的全流程排版练习。建立检查清单:基于国赛规范制定排版检查清单,在提交前逐项核对——公式编号连续?图表引用准确?参考文献完整?页数不超限?善用模板但不止于模板:模板提供的是起点而非终点。根据自身需求调整宏包配置和样式参数,理解每一行配置的含义。关注评审体验:从评委的视角审视论文——重点内容是否突出?逻辑结构是否清晰?视觉层次是否合理?备份与容错:无论使用何种工具,建立多级备份机制。本地、云端、U盘各存一份,且定期保存历史版本。

YOLO 210

腾讯云CDN+COS搭建图床超详细步骤

作为一名经常写博客的博主,图片的上传十分头疼,本地的图片插入不利于复用,经常需要手动上传到指定的服务器里面,十分的麻烦,能不能有一种方案支持一次写完,永久部署呢,当然有的,这就是我们今天的主角图床,我们采用腾讯云CDN+COS+Pic-go app上传图片,对于一张图片只需要快捷键即可完成上传,接下来我们来了解一下如何部署,正文即将开始~~

lijianlong1989的博客 553

推荐系统(十六):基于ESMM的商品召回/推荐系统

ESMM(Entire Space Multi-Task Model)是阿里巴巴提出的多任务学习框架,通过联合建模点击率(CTR)和点击转化率(CVR)解决传统CVR模型样本稀疏问题。其核心思想是将 CVR 定义为 CTR 与 CTCVR 的条件概率,模型包含两个子任务。

Jin_Kwok的博客 1265

paopao-ce对象存储终极指南:阿里云OSS、腾讯云COS、华为云OBS多平台一键适配

paopao-ce是一个基于Gin后端和现代TypeScript/Vue前端架构构建的可扩展社交社区平台,提供了灵活的对象存储解决方案,支持阿里云OSS、腾讯云COS、华为云OBS等主流云存储服务,帮助用户轻松实现图片、视频等多媒体资源的存储与管理。 [![paopao-ce社交平台界面展示](https://raw.gitcode.com/gh_mirrors/pa/paopao-ce/raw

gitblog_01045的博客 940

L3自动驾驶时代,域控制器核心解析(第一篇:架构演进与五域基础)

本文作为L3域控制器系列的第一篇,核心梳理了3个关键内容:L3时代为什么必须用域控制器:解决分布式ECU的协同、算力、迭代难题;域控制器的演进路线:从分布式ECU→域集中式→中央计算平台;博世五域架构的核心解析:五大域的定位、功能与典型方案。后续将持续更新系列文章,重点覆盖:第二篇:L3对域控制器的关键技术要求(传感器、算力、线控、软件、通信);第三篇:域控制器全产业链拆解(上游芯片、中游器件、下游总成);第四篇:域控制器的产业机遇与国产替代进展。

getusushu的博客 532

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

基于腾讯云COS+CI图文音视频解决方案

从早期的门户网站,到后面的feeds流,再到如今的各种垂直行业的社区分享,一次次变更成就了近几年行业中的领跑者。从行业领先的微博,再看小红书、B站等等,绝对都是可以看到feeds和社区的...

云存储小天使的博客 1735

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

小程序/网站【兼容】 直接上传文件到腾讯云cos对象存储 -Golang/PHP后端解密

最近在做用uni-app做项目的时候,需要把所有的文件资源全部存储cos里,这样就涉及到了小程序端以及H5 ,所以写了这个轮子,方便调用所以造了这个轮子 微信cos js-sdk 下载 下载链接:https://github.com/tencentyun/cos-wx-sdk-v5/tree/master/demo/lib 网站H5 cos js-sdk 下载 下载链接:https://github.com/tencentyun/cos-js-sdk-v5/tree/master/dist 两个

point_to_line的博客 1370

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

awesome-serverless 图床与转码:如何用云函数 + COS 快速搭建免费图床和加解密服务

想要一个免费又稳定的**图床**,还想让**云函数**帮你做**转码加解密**?**awesome-serverless**(Serverless 的 100 种玩法)收录了腾讯云云函数 SCF 的各类开源应用,其中「云函数 + COS 图床」和「Serverless 转码/加解密」两个玩法,正好能帮你零成本搭建自己的图床与加密中转服务,全程无需购买服务器 🚀 ## 一、为什么用 Server

gitblog_00548的博客 925

CDN+COS搭建图床超详细步骤

作为一名经常写博客的博主,图片的上传十分头疼,经常需要手动上传到指定的服务器里面,十分的麻烦,能不能有一种方案支持一次写完,永久部署呢,当然有的,这就是我们今天的主角图床,我们采用CDN+COS+Pic-go app上传图片,对于一张图片只需要快捷键即可完成上传,接下来我们来了解一下如何部署,正文即将开始~~...

wresource的博客 1649

腾讯云COS SDK完整指南:从入门到精通

腾讯云对象存储(Cloud Object Storage,COS)是腾讯云提供的高可用、高可靠、安全、低成本的云存储服务。本指南将带您全面了解如何使用腾讯云COS SDK进行开发,掌握从基础配置到高级应用的全套技能。 [![COS存储架构](https://gitcode.com/gh_mirrors/al/alibabacloud-oss-sdk/blob/e1493c45abf0787f39

gitblog_00981的博客 723

【限时优惠】 bbs-go v4.0.6版本发布:新增安装引导与腾讯云照片上传支持

还在为社区系统部署复杂、图片存储配置繁琐而头疼吗?bbs-go v4.0.6版本重磅发布,带来革命性的安装引导体验和腾讯云COS(Cloud Object Storage,对象存储)无缝集成支持,让社区搭建从未如此简单! ## ???? 版本亮点速览 | 特性 | 描述 | 价值 | |------|------|------| | **可视化安装引导** | 图形化界面,5分钟完成部署 | 降低...

gitblog_01424的博客 401

腾讯云OSS存储快速上手指南

腾讯云对象存储(OSS)提供高可用、高扩展的云存储服务。使用方法包括:1)创建存储桶,设置名称、地域和访问权限;2)通过控制台或SDK上传文件;3)下载文件;4)管理文件权限;5)删除文件。注意事项包括密钥安全、流量费用和生命周期管理。支持Python、Java等多种语言SDK,适用于图片、视频等非结构化数据存储。

2509_92429804的博客 1288

基于Go和Vue快速开发的博客系统-快速上手Gin框架

摘要:MyBlog是一个基于Go(Gin)和Vue3的轻量级Markdown博客系统,采用前后端分离架构,通过Docker单镜像部署。后端使用Gin框架和MySQL数据库,前端采用Vite构建的Vue3应用,集成Element Plus和Markdown编辑器。系统支持文章浏览、内容管理、腾讯云COS图片存储等功能,具有简洁的左右分栏布局。部署方式支持Docker快速部署和本地开发模式,配置文件包含数据库、管理员账号和COS存储等设置。项目地址:https://xizhenhua.top,代码开源在GitH

席万里的博客 829

PicGo安装配置

简单介绍 ​ Typora给广大码字员提供了一个极为便利的Markdown编辑工具,同时Typora也提供了上传图片到服务器的功能。 其中PicGo(app)其实相当于Typora调用了一个第三方程序上传到你的图床。 安装 安装nodejs,且版本要求 >=8。 安装Pic-Go。(可以在Typora中配置中找到下载入口,也可以直接去GitHub上进行下载) GitHub下载地址:Releases · Molunerfinn/PicGo 这是我安装完并配置好后的主界面。 PicGo本体只

qq_41526540的博客 4965

S3 对象存储集成实战:Bangumi Server 图片存储与缓存自动清理全攻略

Bangumi Server 是 bgm.tv 的开源 API 服务端项目,本文带你一步步看懂它的 S3 对象存储集成方案。通过接入 S3 对象存储,Bangumi Server 不仅解决了海量图片的存储问题,还实现了"头像一变、缓存即清"的自动图片处理链路,堪称图片存储与缓存清理的教科书级实践。无论你是刚接触对象存储的新手,还是想了解图片处理架构的开发者,这篇文章都能让你收获满满。🚀 ##

gitblog_00222的博客 959

为OpenClaw构建腾讯云COS技能:实现AI对话内容持久化存储

对象存储(COS)作为云原生时代的基础设施,提供了海量、安全、低成本的存储能力,其核心原理是通过RESTful API将数据以对象形式存储在分布式系统中。这项技术解决了传统文件存储的扩展性瓶颈,为现代应用提供了可靠的数据持久化方案。在AI应用场景中,大语言模型(LLM)如OpenClaw能够生成丰富的文本、代码等内容,但缺乏与外部存储系统集成的能力,导致有价值的对话产出无法长期保存和复用。通过开发Webhook Skill,可以桥接AI助手与云存储服务,利用自然语言处理(NLP)解析用户指令,调用COS S

weixin_30825199的博客 470
上一篇: 服务器上安装Docker并进行基本配置
下一篇: 在Golang中简单使用WebSocket
走,我们去抽风
博客等级 码龄5年 21粉丝 22原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值