1

我想使用最新的 Java SDK 来利用 Google Drive 的新缩略图功能。但我得到的只是一个糟糕的请求响应。有人可以发布此功能的工作示例吗?我一直在简单地设置 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)
4

1 回答 1

0

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

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

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

于 2012-10-23T10:22:12.323 回答