0

我正在尝试使用 Python API 从 Google Drive 下载文件。我正在查看文档,我看到一个包含两个 args 的 def,即服务实例和 Drive File 实例。我在任何地方都看不到如何创建驱动器文件实例以传递给 def。这应该怎么做?也许我只是在这里不理解一些简单的东西,这也是一个很好的可能性......

4

3 回答 3

4

我不知道您提到的文档页面,但是为了下载文件,请获取其元数据并向其 downloadUrl 发出经过身份验证的请求。

f = service.files().get(fileId=file_id).execute()
resp, content = service._http.request(f.get('downloadUrl'))
于 2013-04-17T11:03:50.317 回答
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();
}

有关完整说明,您可以参考:https ://developers.google.com/drive/web/examples/java#putting_together_the_pieces_getting_a_complete_set_of_credentials_for_every_request

于 2014-02-15T11:49:39.773 回答
2

您可以考虑尝试 Temboo Python SDK,它包含使用 Google Drive 的简化方法(以及 100 多个其他 API)。看看https://www.temboo.com/library/Library/Google/Drive/Files/Get/

(全面披露:我在 Temboo 工作。)

于 2013-04-16T23:20:44.910 回答