概要
Dropbox SDK for Go という非公式のパッケージを使ってドロップボックスにファイルのアップロードやダウンロードを行う方法を紹介します。
go version go1.12.3 darwin/amd64
パッケージのインストール
go get github.com/dropbox/dropbox-sdk-go-unofficial/dropbox
インスタンスの生成
import "github.com/dropbox/dropbox-sdk-go-unofficial/dropbox"
import "github.com/dropbox/dropbox-sdk-go-unofficial/dropbox/files"
config := dropbox.Config{
Token: "DROPBOX_API_TOKEN",
}
client := files.New(config)
ファイル一覧の取得
arg := files.NewListFolderArg("path")
res, err := client.ListFolder(arg)
if err != nil {
panic(err)
}
for _, e := res.Entries {
f, ok := e.(*files.FileMetadata)
if ok {
fmt.Println(f.Name)
}
}
ファイルのダウンロード
arg := files.NewDownloadArg("filepath")
_, err := client.Download(arg)
if err != nil {
panic(err)
}
ファイルのアップロード
新規ファイルのアップロード
arg := files.NewCommitInfo("filepath")
// io.Reader型ならなんでも良い
file, _ := os.Create("sample.txt")
_, err := client.Upload(arg, file)
if err := nil {
panic(err)
}
既存ファイルへのアップロード(上書き)
arg := files.NewGetMetadataArg("filepath")
res, err := client.GetMetadata(arg)
if err != nil {
panic(err)
}
var rev string
m, ok := res.(*files.FileMetadata)
if ok {
rev = m.Rev
}
arg = files.NewCommitInfo("filepath")
args.Mode = &files.WriteMode{Tagged: dropbox.Tagged{"update"}, Update: rev}
file, _ := os.Create("sample.txt")
_, err := client.Upload(arg, file)
if err != nil {
panic(err)
}