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