将com.google.api.services.drive.model.File转换为java.io.File

时间:2013-07-22 20:14:27

标签: google-app-engine google-drive-api java-io multipartentity

所以我想创建一个java.io.File,以便我可以使用它来生成多部分形式的POST请求。我有一个com.google.api.services.drive.model.File形式的文件,所以我想知道,有没有办法将这个Google文件转换为Java文件?这是一个使用Google App Engine SDK的网络应用程序,该SDK禁止我尝试过这项工作的所有方法

2 个答案:

答案 0 :(得分:4)

不,您似乎无法将com.google.api.services.drive.model.File转换为java.io.File。但是仍然可以使用Drive中的数据生成多部分形式的POST请求。

因此,com.google.api.services.drive.model.File类用于存储有关该文件的元数据。它不存储文件内容。

如果要将文件内容读入内存,Drive文档中的此代码段会显示如何执行此操作。一旦文件在内存中,你就可以随心所欲地做任何事情。

 /**
 * Download the content of the given file.
 *
 * @param service Drive service to use for downloading.
 * @param file File metadata object whose content to download.
 * @return String representation of file content.  String is returned here
 *         because this app is setup for text/plain files.
 * @throws IOException Thrown if the request fails for whatever reason.
 */
private String downloadFileContent(Drive service, File file)
    throws IOException {
  GenericUrl url = new GenericUrl(file.getDownloadUrl());
  HttpResponse response = service.getRequestFactory().buildGetRequest(url)
      .execute();
  try {
    return new Scanner(response.getContent()).useDelimiter("\\A").next();
  } catch (java.util.NoSuchElementException e) {
    return "";
  }
}

https://developers.google.com/drive/examples/java

This post可能有助于您从Google AppEngine发出多部分POST请求。

答案 1 :(得分:0)

在GoogleDrive Api v3中,您可以将文件内容下载到OutputStream中。您需要该文件ID,该文件ID可从 com.google.api.services.drive.model.File

获得。
String fileId = "yourFileId";
OutputStream outputStream = new ByteArrayOutputStream();
driveService.files().get(fileId).executeMediaAndDownloadTo(outputStream);