在 US3 中,一个存储空间(Bucket)可以存储不同存储类型的对象,存储类型的详细介绍参见存储类型。
本 SDK 提供了指定存储类型上传文件的功能,可通过在HTTP Header中添加 X-Ufile-Storage-Class 字段指定存储类型即可
说明
- X-Ufile-Storage-Class 可指定值为ARCHIVE、IA或STANDARD
- 目前 PutFile、PostFile 和分片上传均支持指定存储类型上传文件,秒传接口 UploadHit 默认存储类型为 STANDARD
代码示例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
package main
import (
ufsdk "github.com/ufilesdk-dev/ufile-gosdk"
"log"
"net/http"
)
const (
ConfigFile = "config.json"
FilePath = "FakeSmallFile.txt"
ArchiveEKeyName = "ArchiveFakeSmallFile.txt"
IAKeyName = "IAFakeSmallFile.txt"
StanEKeyName = "StandardFakeSmallFile.txt"
)
func main() {
// 加载配置,创建请求
config, err := ufsdk.LoadConfig(ConfigFile)
if err != nil {
panic(err.Error())
}
header := make(http.Header)
// 上传一个归档存储类型文件 ( 首次使用 X-Ufile-Storage-Class 需使用 http.Header.Add 方法添加)
header.Add("X-Ufile-Storage-Class", "ARCHIVE")
// 若使用 NewFileRequest 构造 req,则添加 http.Header 前,需先执行 req.RequestHeader = make(http.Header)
req, err := ufsdk.NewFileRequestWithHeader(config, header, nil)
if err != nil {
panic(err.Error())
}
err = req.PutFile(FilePath, ArchiveEKeyName, "")
if err != nil {
log.Fatalf("文件上传失败,失败原因:%s", err.Error())
}
// 上传一个低频存储类型文件 (修改Header已有字段使用 Set )
req.RequestHeader.Set("X-Ufile-Storage-Class", "IA")
err = req.PutFile(FilePath, IAKeyName, "")
if err != nil {
log.Fatalf("文件上传失败,失败原因:%s", err.Error())
}
// 上传一个标准存储类型文件
req.RequestHeader.Set("X-Ufile-Storage-Class", "STANDARD")
err = req.PutFile(FilePath, StanEKeyName, "")
if err != nil {
log.Fatalf("文件上传失败,失败原因:%s", err.Error())
}
}
错误码
HTTP 状态码 | RetCode | ErrMsg | 描述 |
---|---|---|---|
400 | -148653 | bucket not exists | 存储空间不存在 |
400 | -15036 | check md5 failed | MD5校验失败 |
401 | -148643 | no authorization found | 上传凭证错误 |
403 | -148643 | invalid signature | API公私钥错误KeyName包含%、#、? |