指定存储类型上传

在 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包含%、#、?