我正在尝试使用curl
将 zip 文件上传到 Google 云端硬盘帐户。
文件已成功上传,但文件名未更新。它以默认文件名上传,即">无标题"。
我正在使用以下命令。
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
您可以使用云端硬盘 API v3 上传 zip 文件。修改后的 curl 代码如下。
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
。
上面的答案工作正常,是我使用 Curl 将文件上传到 Google 云端硬盘时使用的命令。但是,我不明白范围是什么以及使此命令工作所需的所有初始设置。因此,出于文档目的。我会给出第二个答案。
截至撰写本文时有效...
访问"凭据"页面并创建一个新凭据(假设您已创建项目(。我为电视和受限设备创建了凭据,因此工作流程类似于:
> OAuth 客户端 ID 创建凭据>应用程序类型>电视和受限输入设备>将客户端命名为>单击创建"。
完成此操作后,我可以在查看新创建的凭据时复制客户端 ID 和客户端密钥。
注意:只有 Curl 命令中带有双星号的变量才应被替换。
下一步是运行 Curl 命令:
curl -d "client_id=**client_id**&scope=**scope**" https://oauth2.googleapis.com/device/code
在这种情况下,范围可以被视为您打算对具有输入client_id的凭据进行访问的类型。文档中有关范围的更多信息 对于重点用例,即上传文件,选择的范围是https://www.googleapis.com/auth/drive.file
。
在运行上面的 curl 命令时,您将获得类似于以下内容的响应:
{ "device_code": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXverification_url expires_in>
下一步是在浏览器中访问响应中的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": "XXXXXXXXXX", "expires_in":3599,
"refresh_token": "XXXXXXXXXX", "scope": "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"