没有任何UI上传到Google云端硬盘?

时间:2012-09-16 11:38:09

标签: google-drive-api

我希望编写一个服务器应用程序来将文件上传到Google云端硬盘。我以前使用的是Documents List API,但我看到它已被弃用。我想转到Google Drive API,但这似乎非常局限于使用网络/ OAuth流程。

我需要做的就是将Word,Excel文件等上传到Google云端硬盘,但我需要以完全自动化的方式执行此操作,不需要任何用户界面。我希望编写一个命令行应用程序,它可以在cron或其他任何东西上运行,而不需要通过Web等人工干预。

我宁愿离开Documents List API,因为我不想在他们最终关闭它时被烧毁,我想使用一个支持的API,谷歌不会很快摆脱它。这是否存在?

由于

加里

6 个答案:

答案 0 :(得分:8)

您的应用程序需要用户的许可才能对其文件使用API​​。该授权需要使用基于Web的Oauth进行。该授权的结果是您的服务器应用程序最终会有一个可以存储的刷新令牌。您的应用可以随时将该刷新令牌转换为访问令牌并访问驱动器文件。

因此,如果您接受需要进行一次性授权,则可以实现您所需的目标。

答案 1 :(得分:4)

赢/林/ MAC / ... https://github.com/prasmussen/gdrive

$ gdrive list
转到此网址...输入oauth验证码...确定
$ gdrive上传文件
$ gdrive mkdir UploadDir
ID_of_UploadDir
$ gdrive sync upload LocalDir ID_of_UploadDir

答案 2 :(得分:2)

Google云端硬盘文档包含您所追求的答案:

https://developers.google.com/drive/v2/reference/files/insert

答案 3 :(得分:2)

gdrive解决方案目前无法使用(登录问题)。因此,您现在可以使用rclone。您可以使用

进行安装
conda install -c conda-forge rclone

然后按照配置文档https://rclone.org/drive/
配置完成后,您将可以使用以下命令复制到Google驱动器(状态标志用于进度条)

rclone copy <filename> remote: --stats-one-line -P --stats 2s

rclone包含许多后端,因此您不仅可以上传到Google驱动器

答案 4 :(得分:0)

答案 5 :(得分:0)

由于不再维护gdrive tool。我找到了一种官方的更好的方法。

使用卷发。

  1. 安装Curl

sudo apt install curl

  1. google console上创建项目凭据。如果没有,请先注册一个帐户。

创建凭据>配置OAth同意屏幕(如果需要)>应用程序类型>电视和受限输入设备>保存客户端ID和客户端密钥。

  1. 验证设备

curl -d "client_id=<client_id>&scope=https://www.googleapis.com/auth/drive.file" https://oauth2.googleapis.com/device/code

预期的响应:

{"device_code": "<long string>",
"user_code": "xxx-xxx-xxx",
"expires_in": 1800,
"interval": 5,
"verification_url": "https://www.google.com/device"}

然后转到https://www.google.com/device->输入"user_code"->授予相关权限。

  1. 保存"device_code""user_code"值。
  2. 获取承载代码

curl -d client_id=<client id> -d client_secret=<client secret> -d device_code=<device code> -d grant_type=urn%3Aietf%3Aparams%3Aoauth%3Agrant-type%3Adevice_code https://accounts.google.com/o/oauth2/token

预期输出:

{
"access_token": ".....",
"expires_in": 3599,
"refresh_token": "....",
"scope": "https://www.googleapis.com/auth/drive.file",
"token_type": "Bearer"
}
  1. 保存"access_token"值。

  2. 开始上传

curl -X POST -L -H "Authorization: Bearer <enter access_token here>" -F "metadata={name :'filename.zip'};type=application/json;charset=UTF-8" -F "file=@filename.zip;type=application/zip" "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart"

注意

在上传之前对文件进行zip存档。上面的代码适用于存档文件。我通过上述方法成功上传了10GB存档。

Source