Golang操作阿里云OSS上传文件

这篇具有很好参考价值的文章主要介绍了Golang操作阿里云OSS上传文件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

为什么要使用OSS?应用场景是什么?

最近在开发考试系统,里面需要上传课件,课件包括pdf,map等等各种类型的文件,这些文件不能像图片一样,直接上传到项目目录下面,需要单独存放,阿里云就提供了存储方式,然后OSS是其中的一种,可以用来存储一些文件。

我们需要登录阿里云,之前一直使用的是阿里云的ESC,一个轻量级的服务器,我现在理解的是,OSS和ESC是阿里云开发的不同的功能。ESC就是我们平常使用的服务器,然后OSS则是用于云存储。

go oss,golang,阿里云,学习,云计算

go oss,golang,阿里云,学习,云计算

知道上述大体概念之后,我们开始入门OSS,可以看官方推荐的新手入门视频OSS阿里云_ OSS是什么意思_对象储存OSS_阿里云OSS学习路径图_OSS Learning Path - 阿里云 (aliyun.com)

视频中分为四步:开通OSS;创建Bucker存储空间;手动上传文件;下载和分享文件;

上面是直接把自己电脑的本地文件上传到OSS,对于能够登陆OSS控制台的人才能够完成,但是项目中的需求是让每一位老师都能自己上传自己电脑本地的文件到OSS中,那应该如何做呢?

我们使用的是Golang中的Gin框架开发,所以去找官方网站上面的OSS有关Golang的SDK,链接:简介 (aliyun.com)

一:前期准备 

go oss,golang,阿里云,学习,云计算

 我们已经开通过了OSS服务,所以我们接下来需要创建一个AccessKey

AccessKey包括AccessKey ID和AccessKey Secret。 

  • AccessKey ID:用于标识用户。

  • AccessKey Secret:用于验证用户的密钥。AccessKey Secret必须保密。

AccessKey就是登陆凭证,能够让我们使用Golang达到类似网页登陆的效果,能够操控OSS。

创建AccessKey

官方文档上面建议给AMP用户创建AccessKey,不建议给阿里云主用户创建,什么是AMP用户呢?我也不清楚,后面再说。

创建RAM用户的AccessKey

go oss,golang,阿里云,学习,云计算

 如果没有RAM用户的话,根据操作创建一个就行,操作参考链接:创建AccessKey (aliyun.com)

创建完成后注意要给对应用户开放权限,不然后续的初始化会出现问题。 

 二:初始化Client(具体Golang实现)

Client是OSS的Go客户端,用于管理存储空间和文件等OSS资源。

新建Client时,需要指定Endpoint。有关Endpoint的更多信息,请参见访问域名和数据中心和自定义访问域名。

go oss,golang,阿里云,学习,云计算

 找到对应的Endpoint,然后再填写之前的AccessKeyId即可。

package main

import (
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"os"
)

func main() {
	// 创建OSSClient实例。
	// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
	// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
	fmt.Println("OSS Go SDK Version: ", oss.Version)
	client, err := oss.New("xxx", "xxx", "xxx")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	//列举所有的存储空间
	marker := ""
	for {
		lsRes, err := client.ListBuckets(oss.Marker(marker))
		if err != nil {
			fmt.Println("Error:", err)
			os.Exit(-1)
		}

		// 默认情况下一次返回100条记录。
		for _, bucket := range lsRes.Buckets {
			fmt.Println("Bucket: ", bucket.Name)
		}

		if lsRes.IsTruncated {
			marker = lsRes.NextMarker
		} else {
			break
		}
	}
	//判断存储空间是否存在
	//yourBucketName存储空间名称
	BucketName := "testyjp"
	isExist, err := client.IsBucketExist(BucketName)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	fmt.Println("IsBucketExist result : ", isExist)
	//文件上传,文件上传有简单上传,追加上传,断点续传上传,分片上传
	if !isExist {
		os.Exit(-1)
	}
	bucket, err := client.Bucket(BucketName) //注意此处不要写错,写错的话,err让然是nil,我们应该需要先判断一下是否存在
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	err = bucket.PutObjectFromFile("exampledir/产品经理必懂的技术那点事儿 (唐韧) (z-lib.org).pdf", "E:\\产品经理必懂的技术那点事儿 (唐韧) (z-lib.org).pdf")
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
}

go oss,golang,阿里云,学习,云计算

 至此,上传成功。上面只是一个简单的小demo,但是大概梳理通了整体逻辑,后续项目的操作都需要在此基础上进行。文章来源地址https://www.toymoban.com/news/detail-784410.html

到了这里,关于Golang操作阿里云OSS上传文件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 文件上传对接阿里云OSS

    1.首先注册登陆阿里云,在产品里找到oss服务  2.点击开通oss服务后,可以看到oss服务面板  3.创建一个Bucket文件存储桶 Bucket 相当于 dir =bbs/avatar 用作文件隔离 4.java对接oss服务 找到java SDK 5.导入SDK的依赖  如果使用的是Java 9及以上的版本,则需要添加jaxb相关依赖。添加jaxb相关

    2024年02月05日
    浏览(51)
  • 阿里云对象存储OSS文件上传

    阿里云oss地址: 对象存储OSS_云存储服务_企业数据管理_存储-阿里云 阿里云对象存储OSS是一款海量、安全、低成本、高可靠的云存储服务,提供12个9的数据持久性,99.995%的数据可用性和多种存储类型,适用于数据湖存储,数据迁移,企业数据管理,数据处理等多种场景,可对

    2024年02月12日
    浏览(45)
  • springboot整合阿里云oss实现文件上传

    通过阿里云oss进行文件上传,首先需要开通相关的服务,这边就不在具体说明,不懂的可以百度看一下。 阿里云oss有几个关键的参数,这也是后续通过java进行上传所需要的参数,分别是endpoint(域结点)、AccessKey ID(秘钥id)、AccessKey secret(秘钥)、bucket name(bucket域名)。  通过这几

    2024年01月25日
    浏览(48)
  • SpringCloud整合阿里云OSS实现文件上传

    阿里云OSS官网:OSS管理控制台 (aliyun.com) 什么是对象存储OSS 阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,可提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。 OSS具有与平台无

    2023年04月13日
    浏览(47)
  • SpringBoot整合阿里云Oss实现文件图片上传

    目录 1. 阿里云Oss注册使用 2. 项目中使用 2.1 引入依赖以及插件 2.2 编写配置文件application.properties 2.3 创建常量类,获取配置信息  2.4 serviceImpl中实现逻辑            

    2024年02月08日
    浏览(68)
  • 【案例实战】SpringBoot整合阿里云文件上传OSS

    1.需求背景 C端业务用户头像上传 海量图片音频、视频存储 用户行为日志存储 (1)阿里云OSS介绍 对象存储OSS(Object Storage Service)是阿里云提供的海量、安全、低成本、高持久的云存储服务。其数据设计持久性不低于99.9999999999%(12个9),服务设计可用性不低于99.995%。 OSS具

    2024年02月06日
    浏览(56)
  • 微信小程序文件直接上传阿里云OSS

    第一步 配置Bucket跨域访问 第二步 微信小程序配置域名白名单 以上两步,请参考阿里云官网, 如何在微信小程序环境下将文件上传到OSS_对象存储 OSS-阿里云 https://help.aliyun.com/document_detail/92883.html 安装依赖 wx-oss-upload 然后创建自己的上传方法,引用 wx-oss-upload  然后在选取文

    2024年02月11日
    浏览(53)
  • vue+iviewUi+oss直传阿里云上传文件

    用户获取oss配置信息将文件上传到阿里云,保证了安全性和减轻服务器负担。一般文件资源很多直接上传到服务器会加重服务器负担此时可以选择上传到oss,轻量型的应用可以直接将文件资源上传到服务器就行。废话不多说,下面开始总结本人上传到oss的踩坑之旅。 1、第一

    2024年02月13日
    浏览(48)
  • node.js - 上传文件至阿里云oss

    deploy.js

    2024年02月08日
    浏览(43)
  • 自定义阿里云OSS上传文件的start依赖

    说明:SpringBoot项目之所以开发起来很方便,是因为SpringBoot项目在启动时自动为我们装配了很多Bean对象(参考:http://t.csdn.cn/MddMO),这取决于我们是否在pom.xml文件添加对应的依赖,称为起步依赖。 我们自己也可以自定义实现一个起步依赖,让后面创建的模块,只要引用了该

    2024年02月09日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包