📌  相关文章
📜  cmd 发送文件到谷歌驱动器 - Go 编程语言 - Go 编程语言(1)

📅  最后修改于: 2023-12-03 15:30:01.852000             🧑  作者: Mango

在cmd中发送文件到Google Drive

如果你想在命令行中发送文件到Google Drive,可以使用Google Drive API和Go语言。

设置API密钥

首先,需要获取一个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

注意:确保已将文件路径和文件名设置为正确的值。