赞
踩
阿里云对象存储OSS(Object Storage Service)是一款海量、安全、低成本、高可靠的云存储服务,提供99.9999999999%(12个9)的数据持久性,99.995%的数据可用性。多种存储类型供选择,全面优化存储成本。
非常适合存储非结构化数据,例如视频、图形、日志、文本文件以及各种App应用、多终端同步软件、网盘下载站的文件等,单个文件的大小从1字节到48.8TB,可以存储的个数无限制。
傻瓜式操作就完事
官方文档:https://help.aliyun.com/document_detail/32143.html
官方项目:https://github.com/aliyun/aliyun-oss-go-sdk
运行以下代码查看OSS Go SDK版本:
package main
import (
"fmt"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
func main() {
fmt.Println("OSS Go SDK Version: ", oss.Version)
}
建议使用阿里云子账户只授权oss存储服务来获取key
package main
import (
"fmt"
"github.com/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-hangzhou.aliyuncs.com。其它Region请按实际情况填写。
endpoint := "https://oss-cn-hangzhou.aliyuncs.com"
// 阿里云账号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)
}
}
官方文档:https://help.aliyun.com/document_detail/112718.html?spm=a2c4g.11186623.0.0.e79f3853WePIx1
使用微服务上传会先想到:用前端把图片上传到后端然后后端再上传到oss上,其实这样做是不对的 带宽会翻倍
正确的流程是前端请求后端的一个key 拿着这个key来直接上传到oss,也就是web端直传oss
oss还有一个回调功能 在上传图片成功后回调gin
官方文档:https://help.aliyun.com/document_detail/91818.htm?spm=a2c4g.11186623.0.0.16073c6bvKsZaD#concept-mhj-zzt-2fb
客户端进行表单直传到OSS时,会从浏览器向OSS发送带有Origin的请求消息。OSS对带有Origin头的请求消息会进行跨域规则(CORS)的验证。因此需要为Bucket设置跨域规则以支持Post方法。
去官方文档下载客户端和服务端
服务端启动时可以指定ip
和port
启动后访问服务端
可以发现 文件路径
的前缀就是host
的值
expire是超时时间 这个超时时间可能与阿里云服务的时间不同步 导致后续报错
修改客户端的ip
和port
大部分配置都在upload.js
里面
这里改为服务端的ip
和port
打开html
打开Network查看请求过程
如果出现过期的原因的话有可能是因为这个超时时间可能与阿里云服务的时间不同步
在服务端时间设置长一下
如果使用回调逻辑得用公网
或者内网穿透
然后把callback的url改成外网能访问的url就可以回调了
网络的调用过程:
这里就不说网络穿透了随便用哪个都行例如:花生壳
、frp
等等
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。