我可以使用 Google Drive SDK 将文件上传到 Google Drive,但无法下载。我在谷歌驱动器上有一个文档,我想下载并阅读其内容中的文本。我可以使用以下代码获取文件:
file = drive.files().get(fileId).execute();
downloadUrl 始终为空。我不知道我在哪里看到的,但有人说 Google 文档没有 downloadUrl,您应该改用导出链接。
String downloadUrl = driveFile.getExportLinks().get("text/plain");
if (downloadUrl != null && downloadUrl.length() > 0) {
try {
HttpResponse resp =
drive.getRequestFactory().buildGetRequest(new GenericUrl(downloadUrl)).execute();
content = new Scanner(resp.getContent()).useDelimiter("\\A").next();
} catch (java.util.NoSuchElementException e) {
return "";
}
}
运行此代码后,我没有在我的文本文件中获得内容,而是一个看起来像这样的 html 表示:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Welcome to Google Docs</title>
<style type="text/css">
html, body, div, h1, h2, h3, h4, h5, h6, p, img, dl,
dt, dd, ol, ul, li, table, tr, td, form, object, embed,
article, aside, canvas, command, details, fieldset,
....
有人可以解释一下如何从谷歌驱动器中读取文档的内容吗?
编辑
所以我不知道如何让下载与 Google Drive SDK 一起工作。但是,我确实让它与此代码一起使用:
String downloadUrl = driveFile.getExportLinks().get("text/plain");
HttpClient client = new DefaultHttpClient();
HttpGet get = new HttpGet(downloadUrl);
get.setHeader("Authorization", "Bearer " + token);
org.apache.http.HttpResponse response = client.execute(get);
InputStream inputStream = response.getEntity().getContent();
content = new java.util.Scanner(inputStream).useDelimiter("\\A").next();
糟糕的是,当我得到使用 Drive SDK 所需做的所有其他事情时。如果有人能弄清楚为什么这是有效的,但不是我在 SDK 中使用的代码,请告诉。