使用curl命令通过drive-rest-api将文件上传到Google驱动器中特定文件夹的直接方法

时间:2019-07-19 20:50:44

标签: rest curl google-drive-api

我正在编写一个bash脚本,该脚本使用curl命令将本地文件上传到google驱动器。在这种情况下,我总是使用google-drive-v3 rest查询来创建和更新(PATCH)文件。 有什么方法可以将文件直接上传到驱动器中的特定文件夹吗?

目前,我已编写了该脚本,

1。在特定目录下创建空文件。

curl --request POST   'https://www.googleapis.com/drive/v3/files'   --header 'Authorization: Bearer [ACCESS-TOKEN]'   --header 'Accept: application/json'   --header 'Content-Type: application/json'   --data '{"name":"NEW_FILE_NAME","mimeType":"image/jpeg","parents":["DEST_DIRECTORY"]}'   --compressed

这将成功在指定目录中创建一个空的新文件。

2。将文件内容上传为PATCH。

curl --request PATCH 'https://www.googleapis.com/upload/drive/v3/files/FILEID'   --header 'Authorization: Bearer [ACCESS_TOKEN]' -F "fileupload=@ubuntu-logo.png;type=image/png"   --compressed

这将更新上面指定的文件ID中的文件内容。

有没有办法将上述两个步骤合并为一个?

同时,通过这种创建和更新文件的方法,如果它是image / png文件,则不会生成要预览的缩略图。也请解决此问题。

2 个答案:

答案 0 :(得分:0)

问题1:

  • 您要使用curl命令将图像文件上传到特定文件夹。
  • 您已经具有用于将文件上传到Google云端硬盘的访问令牌。

如果我的理解正确,那么这个答案如何?

示例curl命令:

使用此功能时,请设置访问令牌和文件夹ID。

curl -X POST \
  -H "Authorization: Bearer [ACCESS-TOKEN]" \
  -F "metadata={ \
               name : 'NEW_FILE_NAME', \
               mimeType : 'image/png', \
               parents: ['DEST_DIRECTORY'] \
               };type=application/json;charset=UTF-8" \
  -F "file=@ubuntu-logo.png;type=image/png" \
  "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart"

注意:

  • 不幸的是,无法在此API上将mimeType从image/jpeg转换为image/png

问题2:

  • 在您的2个curl命令(创建和更新)中,缩略图无法更新。
    • 您想了解这个问题。

如果我的理解正确,那么这个答案如何?

问题:

在用于更新文件的curl命令中,未使用元数据。在这种情况下,缩略图似乎无法更新。如果要更新缩略图而不更新所有元数据,请添加-F "metadata={};type=application/json"并将?uploadType=multipart添加到端点。这样,缩略图就会更新。

修改后的curl命令如下。在这种情况下,修改了用于更新文件的curl命令。

修改的curl命令:

curl --request PATCH 'https://www.googleapis.com/upload/drive/v3/files/FILEID?uploadType=multipart' --header 'Authorization: Bearer [ACCESS_TOKEN]' -F "metadata={};type=application/json" -F "file=@ubuntu-logo;type=image/png"   --compressed

参考:

如果我误解了您的问题,而这不是您想要的结果,我深表歉意。

答案 1 :(得分:0)

如果您使用的是Linux或Mac,请使用https://rclone.org/