我正在编写一个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文件,则不会生成要预览的缩略图。也请解决此问题。
答案 0 :(得分:0)
如果我的理解正确,那么这个答案如何?
使用此功能时,请设置访问令牌和文件夹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"
image/jpeg
转换为image/png
。如果我的理解正确,那么这个答案如何?
在用于更新文件的curl命令中,未使用元数据。在这种情况下,缩略图似乎无法更新。如果要更新缩略图而不更新所有元数据,请添加-F "metadata={};type=application/json"
并将?uploadType=multipart
添加到端点。这样,缩略图就会更新。
修改后的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/