使用curl将zip文件上传到google驱动器

时间:2017-08-25 09:48:44

标签: shell curl upload google-drive-api

我正在尝试使用curl -k -H "Authorization: Bearer cat /tmp/token.txt" -F "metadata={name : 'backup.zip'} --data-binary "@backup.zip" https://www.googleapis.com/upload/drive/v2/files?uploadType=multipart 将zip文件上传到Google云端硬盘帐户。

文件上传成功但文件名未更新。它会以默认文件名上传,即" 无标题"。

我正在使用以下命令。

{{1}}

2 个答案:

答案 0 :(得分:8)

您可以使用Drive API v3上传zip文件。修改后的卷曲代码如下。

curl -X POST -L \
    -H "Authorization: Bearer `cat /tmp/token.txt`" \
    -F "metadata={name : 'backup.zip'};type=application/json;charset=UTF-8" \
    -F "file=@backup.zip;type=application/zip" \
    "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart"

要使用此功能,请在范围中加入https://www.googleapis.com/auth/drive

答案 1 :(得分:6)

上面的答案很好用,是我使用Curl将文件上传到Google云端硬盘时使用的命令。但是,我不知道什么是作用域以及使此命令起作用所需的所有初始设置。因此,出于文档目的。我再给出一个答案。

在撰写本文时有效...

访问Credentials page并创建一个新的凭据(假设您已经创建了一个项目)。我为电视和受限设备创建了凭据,因此工作流程类似于:

创建凭据> OAuth客户端ID>应用程序类型>电视和受限输入设备>命名客户端>单击创建。

完成此操作后,我可以在查看新创建的凭据时复制客户端ID和客户端密钥。

注意:只有Curl命令中带有双星号的变量才应替换。

下一步是运行Curl命令:

curl -d "client_id=**client_id**&scope=**scope**" https://oauth2.googleapis.com/device/code
在这种情况下,

范围可以被认为是您打算使用输入了 client_id 的凭据进行的访问。有关the docs范围的更多信息,对于焦点集中的用例(即上传文件),选择的范围为https://www.googleapis.com/auth/drive.file

在运行上面的curl命令时,您将获得类似于以下内容的响应:

{“ device_code”:“ XXXXXXXXXXXXX”,“ user_code”:“ ABCD-EFGH”,
“ expires_in”:1800,“ interval”:5,5,“ verification_url”: “ https://www.google.com/device”}

下一步是在浏览器的响应中访问 verification_url ,提供 user_code 并接受许可请求。遵循所有提示后,系统将为您提供一个代码,其余步骤不需要该代码(但在某些其他情况下可能需要使用此代码)。

下一步是使用Curl命令:

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”:“ XXXXXXXXX”,“ expires_in”:3599,
“ refresh_token”:“ XXXXXXXXX”,“范围”: “ https://www.googleapis.com/auth/drive.file"、"token_type”:“承载者” }

现在,您可以使用访问令牌,并使用类似于以下内容的Curl命令跟踪已接受的答案:

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