3

Google ドライブ SDK を使用してファイルを Google ドライブにアップロードできますが、ダウンロードが機能しません。Google ドライブにドキュメントがあり、そのコンテンツのテキストをダウンロードして読みたいと考えています。次のコードでファイルを取得できます。

    file = drive.files().get(fileId).execute();

downloadUrl は常に null です。どこで読んだかわかりませんが、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ドライブからドキュメントの内容を読む方法を誰か説明してもらえますか?

編集

そのため、ダウンロードを Google ドライブ 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

「text/html」を試してください。リッチ テキスト ドキュメントをエクスポートしているので、プレーンよりも html の方が理にかなっています。

于 2012-10-10T11:31:57.497 に答える