go sdk创建模拟文件夹
详细解答可以参考官方帮助文档从数据流(io.Reader)中读取数据上传
通过Bucket.PutObject完成简单上传。
提示:
简单上传的示例代码在sample/put_object.go。
字符串上传
import 'strings'
import 'github.com/aliyun/aliyun-oss-go-sdk/oss'
client, err := oss.New('Endpoint', 'AccessKeyId', 'AccessKeySecret')
if err != nil {
// HandleError(err)
}
bucket, err := client.Bucket('my-bucket')
if err != nil {
// HandleError(err)
}
err = bucket.PutObject('my-object', strings.NewReader('MyObjectValue'))
if err != nil {
// HandleError(err)
}
byte数组上传
import 'bytes'
import 'github.com/aliyun/aliyun-oss-go-sdk/oss'
client, err := oss.New('Endpoint', 'AccessKeyId', 'AccessKeySecret')
if err != nil {
// HandleError(err)
}
bucket, err := client.Bucket('my-bucket')
if err != nil {
// HandleError(err)
}
err = bucket.PutObject('my-object', bytes.NewReader([]byte('MyObjectValue')))
if err != nil {
// HandleError(err)
}
文件流上传
import 'os'
import 'github.com/aliyun/aliyun-oss-go-sdk/oss'
client, err := oss.New('Endpoint', 'AccessKeyId', 'AccessKeySecret')
if err != nil {
// HandleError(err)
}
bucket, err := client.Bucket('my-bucket')
if err != nil {
// HandleError(err)
}
fd, err := os.Open('LocalFile')
if err != nil {
// HandleError(err)
}
defer fd.Close()
err = bucket.PutObject('my-object', fd)
if err != nil {
// HandleError(err)
}
根据本地文件名上传
通过Bucket.PutObjectFromFile可以上传指定的本地文件,把本地文件内容作为Object的值。
import 'github.com/aliyun/aliyun-oss-go-sdk/oss'
client, err := oss.New('Endpoint', 'AccessKeyId', 'AccessKeySecret')
if err != nil {
// HandleError(err)
}
bucket, err := client.Bucket('my-bucket')
if err != nil {
// HandleError(err)
}
err = bucket.PutObjectFromFile('my-object', 'LocalFile')
if err != nil {
// HandleError(err)
}
注意:
使用上述方法上传最大文件不能超过5G。如果超过请使用分片上传。
上传时指定元信息
使用数据流上传文件时,用户可以指定一个或多个文件的元信息。元数据的名称大小写不敏感,比如用户上传文件时,定义名字为“name”的meta,使用Bucket.GetObjectDetailedMeta读取结果是:“X-Oss-Meta-Name”,比较/读取时请忽略大小写。
可以指定的元信息如下:
参数
说明
CacheControl
指定该Object被下载时的网页的缓存行为。
ContentDisposition
指定该Object被下载时的名称。
ContentEncoding
指定该Object被下载时的内容编码格式。
Expires
指定过期时间。用户自定义格式,建议使用http.TimeFormat格式。
ServerSideEncryption
指定oss创建object时的服务器端加密编码算法。合法值:AES256。
ObjectACL
指定oss创建object时的访问权限。
Meta
自定义参数,以'X-Oss-Meta-'为前缀的参数。
import (
'strings'
'time'
'github.com/aliyun/aliyun-oss-go-sdk/oss'
)
client, err := oss.New('Endpoint', 'AccessKeyId', 'AccessKeySecret')
if err != nil {
// HandleError(err)
}
bucket, err := client.Bucket('my-bucket')
if err != nil {
// HandleError(err)
}
expires := time.Date(2049, time.January, 10, 23, 0, 0, 0, time.UTC)
options := []oss.Option{
oss.Expires(expires),
oss.ObjectACL(oss.ACLPublicRead),
oss.Meta('MyProp', 'MyPropVal'),
}
err = bucket.PutObject('my-object', strings.NewReader('MyObjectValue'), options...)
if err != nil {
// HandleError(err)
}
提示:
Bucket.PutObject、Bucket.PutObjectFromFile、Bucket.UploadFile、Bucket.UploadFile都支持上传时指定元数据。
创建模拟文件夹
OSS服务是没有文件夹这个概念的,所有元素都是以文件来存储。但给用户提供了创建模拟文件夹的方式,如下代码:
import 'strings'
import 'github.com/aliyun/aliyun-oss-go-sdk/oss'
client, err := oss.New('Endpoint', 'AccessKeyId', 'AccessKeySecret')
if err != nil {
// HandleError(err)
}
bucket, err := client.Bucket('my-bucket')
if err != nil {
// HandleError(err)
}
err = bucket.PutObject('my-dir/', strings.NewReader(''))
if err != nil {
// HandleError(err)
}
提示:
创建模拟文件夹本质上来说是创建了一个空文件。
对于这个文件照样可以上传下载,只是控制台会对以'/'结尾的文件以文件夹的方式展示。
所以用户可以使用上述方式来实现创建模拟文件夹。
而对文件夹的访问可以参看文件夹功能模拟
赞0
踩1