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

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

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

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

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

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

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

一:前期准备

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

AccessKey包括AccessKey ID和AccessKey Secret。

  • AccessKey ID:用于标识用户。

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

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

创建AccessKey

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

创建RAM用户的AccessKey

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

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

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

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

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

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

package mainimport ("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)}
}

至此,上传成功。上面只是一个简单的小demo,但是大概梳理通了整体逻辑,后续项目的操作都需要在此基础上进行。

Golang操作阿里云OSS上传文件相关推荐

  1. Java实现阿里云OSS上传文件

    推荐:前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.. 点击跳转到网站 1.准备工作:创建操作阿里云OSS许可证 阿里云官方文档 这里不再赘述,根据官方文档一步步的 ...

  2. SpringBoot整合阿里云OSS上传文件

    一.需求分析 文件上传是一个非常常见的功能,就是通过IO流将文件写到另外一个地方,这个地方可以是项目下的某个文件夹里,或者是本地电脑某个盘下面,还可以是云服务OSS里面,这里就是我要讲到的OSS,我写 ...

  3. thinkPHP 阿里云OSS 上传文件、直接下载

    阿里云OSS 上传文件.直接下载 1. 安装OSS SDK composer require aliyuncs/oss-sdk-php 2. thinkPHP接口 public function up ...

  4. 阿里云OSS上传文件时,如何显示上传网速

    阿里云OSS上传文件时,如何显示上传网速 业务场景 用户上传时,网速很慢,或者在上传大文件时,虽然有进度条,但是动的很慢,或者不明显,用户会产生困惑. 所以就产生了一个显示网速的需求点. 实现方式 E ...

  5. 阿里云OSS上传文件设置请求头

    之前写过一篇发送文件消息的,原生input上传文件(聊天发送文件消息),这次的需求就是更改上传地址,使用阿里云OSS上传. 如果想了解阿里云对象存储OSS是如何使用的,请看阿里云存储对象OSS使用讲解 ...

  6. 使用阿里云OSS上传文件

    本文介绍如何利用Java API操作阿里云OSS对象存储. 1.控制台操作 首先介绍一下阿里云OSS对象存储的一些基本概念. 1.1 进入对象存储界面 登录阿里云账号,进入对象存储界面,如图所示. 进 ...

  7. uniapp 阿里云 oss 上传文件/图片

    项目背景: uniapp  开发的 混合项目,包含 H5, ios,  android  三端开发:看了下 本身 alioss  是有提供 JS SDK,但是考虑到兼容问题,所以采用了 PostObj ...

  8. SringBoot集成阿里云OSS上传文件

    上一篇文章讲了如何将文件从linux同步到阿里云的oss有兴趣的小伙伴可以去看看,这篇文章讲述如何将文件上传到阿里云oss上,本文只详细写出后端java代码示例,前端和无用代码都会省略,可以上传文件, ...

  9. 阿里云OSS上传文件以及获取文件

    1.新建bucket (文件存储空间名称),bucket下也可以继续创建目录 2.通过短信验证码创建accessKey,保存accessKeyID和accessKeySecret: 3.添加oss管理 ...

最新文章

  1. 复旦的新衣再登Nature!穿在身上能为手机充电,可水洗可弯折,刀戳车撵都不坏...
  2. 类的主动使用与被动使用等
  3. 多站合一音乐搜索神器网站源码
  4. docker php安装gd扩展_给docker里的php安装gd扩展
  5. Ubuntu下远程访问MySQL数据库
  6. arcgis dem栅格立体感_arcgis中DEM如何生成等高线
  7. linux远程拷贝快捷键远程,linux命令scp远程拷贝
  8. python批量查询ip归属地_利用python实现批量查询ip地址归属地址
  9. linux强行退出线程,Linux 多线程编程--线程退出
  10. Anycubic Vyper 3D打印机串口屏改造开源项目之串口屏项目启动篇(一)
  11. c语言薛定谔方程,如何解薛定谔方程?-- k · p method
  12. Pollard rho整数分解法
  13. 【办公软件有哪几种】万彩办公大师教程丨Office转图片工具
  14. Dynamic 365 子网格编辑控制列可编辑
  15. jpa报错:mappedBy reference an unknown target entity property:
  16. 【Echarts】折线图/趋势图区间框选计算
  17. 无老师作文巨讲堂连载【2015年上半年全集】|托福作文满分必备
  18. 2020.8.26丨Nanopore甲基化测序产品概述
  19. 高精地图在无人驾驶中的应用
  20. 【算法】第三届全国大学生算法设计与编程挑战赛(冬季赛)

热门文章

  1. 2021_RecSys_Together is Better: Hybrid Recommendations Combining Graph Embeddings and Contextualized
  2. 蓝桥杯学习记录-基础练习
  3. 如何用cmd运行jar
  4. 什么是欧拉角/姿态角?
  5. 基于Python通过Chrome的Cookie登录百度账户
  6. 百度智能小程序注册流程
  7. 计算机组成与体系结构(一)
  8. CheckBox和CheckBoxList练习
  9. 职场里,一领导发给大学实习生的邮件!
  10. windows上配置IIS全过程