使用 curl 将 zip 文件上传到 Google 云端硬盘



我正在尝试使用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": "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

verification_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"

相关内容

最新更新