概要

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)
}