新的缩略图功能 - 如何在Java中使用

时间:2012-10-21 11:02:50

标签: google-drive-api

我想使用最新的Java SDK利用Google云端硬盘的新缩略图功能。 但我得到的只是一个糟糕的请求响应。 有人可以发布这个功能的工作示例吗? 我一直只是设置mimetype和Base64编码的图像数据,但这不起作用 - 至少对于file.insert和file.patch。

更新: 这是我的(简化)代码段。它没有新的缩略图工作正常工作 - 编码的图像数据看起来还不错:

...
Drive drive = getDrive(account);
File file = new File();
file.setTitle(name);
...
HTTPResponse response = urlFetch.fetch(new URL(imageUrl));
String encodedImage = new String(Base64.encodeBase64(response.getContent()));
Thumbnail thumbnail = new Thumbnail();
thumbnail.setImage(encodedImage);
thumbnail.setMimeType("image/png");
file.setThumbnail(thumbnail);
file = drive.files().insert(file).execute();

这是回复:

com.google.api.client.googleapis.json.GoogleJsonResponseException: 400 OK
{
  "code" : 400,
  "errors" : [ {
    "domain" : "global",
    "message" : "Bad Request",
    "reason" : "badRequest"
  } ],
  "message" : "Bad Request"
}
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.from(GoogleJsonResponseException.java:143)
    at com.google.api.client.googleapis.json.GoogleJsonResponseException.execute(GoogleJsonResponseException.java:187)
    at com.google.api.client.googleapis.services.GoogleClient.executeUnparsed(GoogleClient.java:279)
    at com.google.api.client.http.json.JsonHttpRequest.executeUnparsed(JsonHttpRequest.java:207)

1 个答案:

答案 0 :(得分:0)

缩略图需要编码为Base64 UrlSafe字符串。 使用

String encodedImage = Base64.encodeBase64URLSafeString(response.getContent());

对图像进行编码解决了问题。