3

我可以使用 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 中使用的代码,请告诉。

4

1 回答 1

1

尝试“文本/html”。您正在导出富文本文档,因此 html 比纯文本更有意义。

于 2012-10-10T11:31:57.497 回答