对不起,我不是很精通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