Giter Club home page Giter Club logo

ufile-gosdk's Introduction

UCloud 对象存储 SDK GoDoc

Modules are interface and implementation.
The best modules are where interface is much simpler than implementation.
By: John Ousterhout

UFile 对象存储基本概念

在对象存储系统中,存储空间(Bucket)是文件(File)的组织管理单位,文件(File)是存储空间的逻辑存储单元。对于每个账号,该账号里存放的每个文件都有唯一的一对存储空间(Bucket)与键(Key)作为标识。我们可以把 Bucket 理解成一类文件的集合,Key 理解成文件名。由于每个 Bucket 需要配置和权限不同,每个账户里面会有多个 Bucket。在 UFile 里面,Bucket 主要分为公有和私有两种,公有 Bucket 里面的文件可以对任何人开放,私有 Bucket 需要配置对应访问签名才能访问。

签名

本 SDK 接口是基于 HTTP 的,为了连接的安全性,UFile 使用 HMAC SHA1 对每个连接进行签名校验。使用本 SDK 可以忽略签名相关的算法过程,只要把公私钥写入到配置文件里面(注意不要传到版本控制里面),读取并传给 UFileRequest 里面的 New 方法即可。
签名相关的算法与详细实现请见 Auth 模块

安装

go get github.com/ufilesdk-dev/ufile-gosdk

执行测试

cd example; go run demo_file.go

功能列表

文件操作相关功能

Put 上传 Post 上传
分片上传 同步分片上传异步分片上传
手动分片上传,步骤一步骤二步骤三取消分片上传
文件秒传
获取文件列表
获取目录文件列表 获取私有空间下载地址获取公有空间下载地址
删除文件
查看文件信息
下载文件
比对本地与远程文件的 Etag
拷贝文件
重命名文件
Put 带回调上传 同步分片上传-带回调异步分片上传-带回调

Bucket 操作相关功能

创建 bucket
删除 bucket
获取 bucket 列表
修改 bucket

签名构造

构造文件管理签名
构造私有空间下载签名
构造 bucket 管理签名

示例代码

SDK 主要分为两个模块,一个是 bucket 管理,一个是 file 管理。使用对象存储你需要频繁的调用 file 管理相关的接口,bucket 管理用到的地方不会太频繁。以下是用 SDK 上传一个文件的例子:

import ufsdk "github.com/ufilesdk-dev/ufile-gosdk"
config, err := ufsdk.LoadConfig(configFile)
if err != nil {
    panic(err.Error())
}
req := ufsdk.NewFileRequest(config, nil)
err = req.PutFile(filePath, keyName, "")
if err != nil {
    fmt.Println("文件上传失败!!,错误信息为:", err.Error())
    //把 HTTP 详细的 HTTP response dump 出来
    fmt.Printf("%s\n",req.DumpResponse(true))
}

更详细的代码请参考 example/demo_file.goexample/demo_bucket.go

文档说明

本 SDK 使用 godoc 约定的方法对每个 export 出来的接口进行注释。 你可以直接访问生成好的在线文档

如何排错?

使用 UFileRequest 里面的方法对返回的 error 进行检查。如果不为 nil,调用 Error() 查看错误信息。调用 DumpResponse(true) 并获取返回值查看详细的 HTTP 返回值。

ufile-gosdk's People

Contributors

leyafo avatar delexxie avatar luxiaobai avatar myml avatar

Stargazers

 avatar

Watchers

James Cloos avatar 王晓敏 avatar

Forkers

nightrain233

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.