oss入口:控制台 -> 对象存储 oss
api文档:右下角 -> 常用入口 -> API 文档 -> 文档中心打开
package main
import (
"fmt"
"os"
"github.com/aliyun/aliyun-oss-go-sdk/oss"
)
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 := "yourEndpoint"
// 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
accessKeyId := "yourAccessKeyId"
accessKeySecret := "yourAccessKeySecret"
// yourBucketName填写存储空间名称。
bucketName := "yourBucketName"
// yourObjectName填写Object完整路径,完整路径不包含Bucket名称。
objectName := "yourObjectName"
// yourLocalFileName填写本地文件的完整路径。
localFileName := "yourLocalFileName"
// 创建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)
}
}
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() {
// Endpoint以杭州为例,其它Region请按实际情况填写。
endpoint := "http://oss-cn-shanghai.aliyuncs.com"
// 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号。
accessKeyId := "上一步获取的accessKeyId"
accessKeySecret := "上一步获取的accessKeySecret"
bucketName := "my-jp-oss"
// 上传文件到OSS时需要指定包含文件后缀在内的完整路径,例如abc/efg/123.jpg。
objectName := "goods/first.jpg"
// 由本地文件路径加文件名包括后缀组成,例如/users/local/myfile.txt。
localFileName := `D:\Downloads\360Downloads\lua.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)
}
}
考虑到安全问题:我们不应该直接将id和secrect保存在前端直传oss
if (xmlhttp!=null)
{
// serverUrl是 用户获取 '签名和Policy' 等信息的应用服务器的URL,请将下面的IP和Port配置为您自己的真实信息。
serverUrl = 'http://127.0.0.1:8082'
xmlhttp.open( "GET", serverUrl, false );
xmlhttp.send( null );
return xmlhttp.responseText
}
new_multipart_params = {
'key' : g_object_name,
'policy': policyBase64,
'OSSAccessKeyId': accessid,
'success_action_status' : '200', //让服务端返回200,不然,默认会返回204
// 'callback' : callbackbody,
'signature': signature,
};
为什么需要内网穿透:续断 -> https://cloud.zhexi.tech/
aliyun-oss-appserver-js-master/upload.js:需要开启callback
new_multipart_params = {
'key' : g_object_name,
'policy': policyBase64,
'OSSAccessKeyId': accessid,
'success_action_status' : '200', //让服务端返回200,不然,默认会返回204
'callback' : callbackbody,
'signature': signature,
};
以下列出主要的修改,其他可以查看源码
var expire_time int64 = 3000
,也可以将这个配置提取到nacos中{
"name":"oss_web",
"host":"192.168.78.1",
"tags":["mxshop","imooc","bobby","oss","web"],
"port":8029,
"oss":{
"key":"xxxxxxx",
"secrect":"xxxxx",
"host":"my-jp-oss.oss-cn-shanghai.aliyuncs.com",
"callback_url":"sadaxxxxxxx",
"upload_dir":"mxshop_images"
},
"jwt":{
"key":"VYLDYq3&hGWjWqF$K1ih"
},
"consul":{
"host":"192.168.78.31",
"port": 8500
}
}