Curl在Google Drive表单图像下载失败



对不起,我不是很精通curl,但我正在尝试使用它下载一个Google Drive图像。该文件以HTML格式下载,而不是jpg格式。我通过包裹在Extendscript app.doScript命令中的Applescript shell脚本调用curl,但我也从终端尝试并收到相同的文件。我按照这些指示做了:https://stackoverflow.com/a/48133140/1810714

这是我正在使用的完整Extendscript代码。

var assetFolderPath = Folder.selectDialog();
var fileName = "/test.jpg";
var front = "https://drive.google.com/uc?export=download&id=";
var root = "google-drive-id#"; //the real id is here instead
var exporturl = front + root;
var ff = File(assetFolderPath + fileName);
var curlCommand = ""curl -L -o '" + ff.fsName + "' " + "'" + exporturl + "'";
var asCode = 'do shell script ' + curlCommand + '"';
app.doScript(asCode, ScriptLanguage.APPLESCRIPT_LANGUAGE);

提前感谢。

如何使用curl使用Drive API下载文件

您似乎正在尝试下载具有files.export端点的文件,但是在文档中它说:

将Google Doc导出为请求的MIME类型并返回导出的内容。

也就是说,export端点只适用于Google Doc类型,即表格、文档、幻灯片等。

对于所有其他类型的文件,您需要在URL的末尾使用files.get?alt=media。为此,您需要文件ID和oauth访问令牌。

bash中的curl命令看起来像这样:

curl 
"https://www.googleapis.com/drive/v3/files/${FILE_ID}?alt=media" 
--header "Authorization: Bearer ${ACCESS_TOKEN}" 
--header 'Accept: application/json' 
--compressed -o $OUTPUT_PATH

用文件id、oauth访问令牌和输出路径替换${}变量。

例如:

curl 
"https://www.googleapis.com/drive/v3/files/xxxxxxx?alt=media" 
--header "Authorization: Bearer xxxxxxx" 
--header 'Accept: application/json' 
--compressed -o image.jpg

假设选择的ID是.jpg文件,那么在运行该文件的文件夹中,它将创建一个image.jpg映像文件。

你可以在指南中找到更多信息。

参考

  • files.export
  • files.get

最新更新