我正在尝试使用Python API从Google云端硬盘下载文件。我正在查看文档,我看到一个def需要两个args,服务实例和一个Drive File实例。我没有看到任何地方如何创建要传递给def的Drive File实例。应该怎么做?也许我只是在这里不了解一些简单的东西,这也是一个很好的可能性......
答案 0 :(得分:4)
我不知道你提到的文档页面,但是,为了下载文件,获取其元数据并向其downloadUrl发出经过身份验证的请求。
f = service.files().get(fileId=file_id).execute()
resp, content = service._http.request(f.get('downloadUrl'))
答案 1 :(得分:2)
您可以考虑尝试使用Temboo Python SDK,其中包含使用Google Drive的简化方法(以及100多个其他API)。看看https://www.temboo.com/library/Library/Google/Drive/Files/Get/
(完全披露:我在Temboo工作。)
答案 2 :(得分:2)
我同意Burcu的回答:Google Drive“get”方法只会返回文件的元数据。如果你想检索文件的内容,你应该使用它的downloadUrl属性下载它,如Burcu所示。所以:1。获取元数据,2。提取downloadUrl属性,3。使用http请求下载。
关于您的问题,“传递给def的驱动器文件实例”实际上是根据凭据构建的,例如:
/**
* Returns the credentials of the user in the session. If user is not in the
* session, returns null.
* @param req Request object.
* @param resp Response object.
* @return Credential object of the user in session or null.
*/
protected Credential getCredential(HttpServletRequest req,
HttpServletResponse resp) {
String userId = (String) req.getSession().getAttribute(KEY_SESSION_USERID);
if (userId != null) {
return credentialManager.get(userId);
}
return null;
};
/**
* Build and return a Drive service object based on given request parameters.
* @param credential User credentials.
* @return Drive service object that is ready to make requests, or null if
* there was a problem.
*/
protected Drive getDriveService(Credential credential) {
return new Drive.Builder(TRANSPORT, JSON_FACTORY, credential).build();
}