2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 【OSS存储】阿里云的oss存储服务 golang的API调用

【OSS存储】阿里云的oss存储服务 golang的API调用

时间:2019-03-18 16:25:44

相关推荐

【OSS存储】阿里云的oss存储服务  golang的API调用

文章目录

前言OSS是什么? 一、单体应用和微服务下的图片存储1.单体应用的图片存储2.微服务下的图片存储 二、阿里云(oss)使用步骤三、使用代码控制文件上传1.安装查看SDK版本2.上传一个文件 四、前端直传oss的流程五、gin集成前端直传文件

前言

OSS是什么?

阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。

非常适合存储非结构化数据,例如视频、图形、日志、文本文件以及各种App应用、多终端同步软件、网盘下载站的文件等,单个文件的大小从1字节到48.8TB,可以存储的个数无限制。

一、单体应用和微服务下的图片存储

1.单体应用的图片存储

2.微服务下的图片存储

二、阿里云(oss)使用步骤

傻瓜式操作就完事

阿里云官方注册账号开通oss服务 如果首次使用 - 手动开通,会让你做实名认证创建存储空间 - bucket上传、下载、删除文件

三、使用代码控制文件上传

官方文档:/document_detail/32143.html

官方项目:/aliyun/aliyun-oss-go-sdk

1.安装查看SDK版本

运行以下代码查看OSS Go SDK版本:

package mainimport ("fmt""/aliyun/aliyun-oss-go-sdk/oss")func main() {fmt.Println("OSS Go SDK Version: ", oss.Version)}

2.上传一个文件

建议使用阿里云子账户只授权oss存储服务来获取key

package mainimport ("fmt""/aliyun/aliyun-oss-go-sdk/oss""os")func handleError(err error) {fmt.Println("Error:", err)os.Exit(-1)}func main() {// yourEndpoint填写Bucket对应的Endpoint,以华东1(杭州)为例,填写为https://oss-cn-。其它Region请按实际情况填写。endpoint := "https://oss-cn-"// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。accessKeyId := "********"accessKeySecret := "*************"// yourBucketName填写存储空间名称。bucketName := "mxshop-nilsfiles"// yourObjectName填写Object完整路径,完整路径不包含Bucket名称。objectName := "test/first.jpg"// yourLocalFileName填写本地文件的完整路径。localFileName := "E:\\zhuomian\\ad.png"// 创建OSSClient实例。client, err := oss.New(endpoint, accessKeyId, accessKeySecret)if err != nil {handleError(err)}// 获取存储空间。bucket, err := client.Bucket(bucketName)if err != nil {handleError(err)}// 上传文件。err = bucket.PutObjectFromFile(objectName, localFileName)if err != nil {handleError(err)}}

四、前端直传oss的流程

官方文档:/document_detail/112718.html?spm=a2c4g.11186623.0.0.e79f3853WePIx1

使用微服务上传会先想到:用前端把图片上传到后端然后后端再上传到oss上,其实这样做是不对的 带宽会翻倍

正确的流程是前端请求后端的一个key 拿着这个key来直接上传到oss,也就是web端直传oss

oss还有一个回调功能 在上传图片成功后回调gin

五、gin集成前端直传文件

官方文档:/document_detail/91818.htm?spm=a2c4g.11186623.0.0.16073c6bvKsZaD#concept-mhj-zzt-2fb

客户端进行表单直传到OSS时,会从浏览器向OSS发送带有Origin的请求消息。OSS对带有Origin头的请求消息会进行跨域规则(CORS)的验证。因此需要为Bucket设置跨域规则以支持Post方法。

去官方文档下载客户端和服务端

服务端启动时可以指定ipport

启动后访问服务端

可以发现文件路径的前缀就是host的值

expire是超时时间这个超时时间可能与阿里云服务的时间不同步 导致后续报错

修改客户端的ipport

大部分配置都在upload.js里面

这里改为服务端的ipport

打开html

打开Network查看请求过程

如果出现过期的原因的话有可能是因为这个超时时间可能与阿里云服务的时间不同步

在服务端时间设置长一下

如果使用回调逻辑得用公网或者内网穿透然后把callback的url改成外网能访问的url就可以回调了

网络的调用过程:

这里就不说网络穿透了随便用哪个都行例如:花生壳frp等等

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。