我正在尝试使用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}}
答案 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"