文件解冻

SDK 提供Restore方法用于解冻归档存储类型的文件,完整代码详见 Github

Restore方法请求的 US3 API 为 Restore,具体详见Restore API文档

说明

  1. 文件解冻需要一定时间,一般在10s以内,解冻完成之前文件不可下载
  2. 可通过HeadFile方法查看解冻是否完成,若解冻成功,则返回的 Http Header 中包含 X-Ufile-Restore 信息

代码示例

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
51
52
package main

import (
	ufsdk "github.com/ufilesdk-dev/ufile-gosdk"
	"log"
	"net/http"
	"time"
)

const (
	ConfigFile = "config.json"
	FilePath = "FakeSmallFile.txt"
	KeyName = "FakeSmallFile.txt"
)

func main() {

	// 加载配置,创建请求
	config, err := ufsdk.LoadConfig(ConfigFile)
	if err != nil {
		panic(err.Error())
	}

	// 上传一个归档存储文件
	header := make(http.Header)
	header.Add("X-Ufile-Storage-Class", "ARCHIVE")
	req, err := ufsdk.NewFileRequestWithHeader(config, header,nil)
	if err != nil {
		panic(err.Error())
	}
	err = req.PutFile(FilePath, KeyName, "")
	if err != nil {
		panic(err.Error())
	}

	// 解冻一个归档存储文件
	err = req.Restore(KeyName)
	if err != nil {
		log.Fatalf("解冻文件 %s 失败,错误信息为:%s", KeyName, err.Error())
	}
	// 文件解冻一般在10s以内
	time.Sleep(time.Second * 10)

	// 获取解冻后文件的基本信息
	err = req.HeadFile(KeyName)
	if err != nil {
		log.Fatalf("获取文件基本信息失败,错误信息为:%s", err.Error())
	}
	if _, ok := req.LastResponseHeader["X-Ufile-Restore"]; ok {
		log.Printf("文件解冻成功,内容为:%s", req.LastResponseHeader.Get("X-Ufile-Restore"))
	}
}

错误码

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包含%、#、?
404 -148654 file not exist 源文件不存在
400 -148660 storage class is not archive 文件类型不是归档存储