📅  最后修改于: 2023-12-03 15:30:01.852000             🧑  作者: Mango
如果你想在命令行中发送文件到Google Drive,可以使用Google Drive API和Go语言。
首先,需要获取一个Google Drive API密钥,并将其存储在一个名为credentials.json
的文件中。该密钥可通过Google开发者控制台获取。
使用命令行安装Google API Go客户端库,该库包含了Google Drive API的Go语言实现:
go get -u google.golang.org/api/drive/v3
接下来,需要创建一个上传脚本来将文件上传到Google Drive。以下是一个简单的脚本示例:
package main
import (
"context"
"fmt"
"io/ioutil"
"log"
"os"
"golang.org/x/oauth2/google"
"google.golang.org/api/drive/v3"
)
func main() {
filePath := "path/to/file"
fileName := "my-file.txt"
// 将文件读入内存
fileBytes, err := ioutil.ReadFile(filePath)
if err != nil {
log.Fatalf("无法读取文件: %v", err)
}
// 从API密钥中创建OAuth2客户端
config, err := google.ConfigFromJSON(credentials, drive.DriveFileScope)
if err != nil {
log.Fatalf("无法从JSON创建OAuth2配置项: %v", err)
}
client := getClient(config)
// 创建drive.Service实例
srv, err := drive.New(client)
if err != nil {
log.Fatalf("无法创建Drive服务: %v", err)
}
// 创建文件到Drive
driveFile := &drive.File{
Name: fileName,
}
createCall := srv.Files.Create(driveFile)
createCall.Media(bytes.NewReader(fileBytes))
file, err := createCall.Do()
if err != nil {
log.Fatalf("无法创建文件到Drive: %v", err)
}
fmt.Printf("已上传文件 '%s' 到 Google Drive 文件ID: '%s'\n", fileName, file.Id)
}
// 从OAuth2配置项中获取OAuth2客户端
func getClient(config *oauth2.Config) *http.Client {
tok, err := tokenFromFile(tokenFile)
if err != nil {
tok = getTokenFromWeb(config)
saveToken(tokenFile, tok)
}
return config.Client(context.Background(), tok)
}
安装必要的库并创建上传脚本后,可以通过运行以下命令来将文件上传到Google Drive:
go run upload.go
注意:确保已将文件路径和文件名设置为正确的值。