尝试使用javascript将文件缩略图设置为Google云端硬盘

时间:2016-08-11 17:35:26

标签: javascript google-drive-api

我正在尝试为我使用Javascript上传到云端硬盘的文件添加缩略图。我正在尝试按照https://developers.google.com/drive/v3/web/file#uploading_thumbnails

的说明进行操作

为了创建我的web-safe base64图像,我使用在线转换器将一个简单的红色方形图像转换为base64,生成

data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP4z8DwHwAFAAH/VscvDQAAAABJRU5ErkJggg==

然后我将data:image/png;后的所有内容全部取消,并将/替换为_并删除了=

iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP4z8DwHwAFAAH_VscvDQAAAABJRU5ErkJggg

然后我在我的请求中将以下内容添加到原始标题中:

contentHints: {
    thumbnail: {
      image: "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP4z8DwHwAFAAH_VscvDQAAAABJRU5ErkJggg",
      mimeType: "image/png"
    }
  }

但是,我无法在Google云端硬盘的列表或网格视图中看到我的文件的缩略图。

有关正在发生的事情的任何想法?

这是我的整个文件保存代码:

function saveFile(content) {
  var boundary = '-------314159265358979323846';
  var header = JSON.stringify({
    title: "My file",
    mimeType: "application/myFile",
    parents: ['root'],
    contentHints: {
      thumbnail: {
        image: "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP4z8DwHwAFAAH_VscvDQAAAABJRU5ErkJggg",
        mimeType: "image/png"
      }
    }
  });
  var method = 'POST';
  var path = "/upload/drive/v2/files";

  var body = [
    "\r\n--" + boundary + "\r\nContent-Type: application/json\r\n\r\n" + header,
    "\r\n--" + boundary + "\r\nContent-Type: " + this.mimeType + "\r\n\r\n" + (content.getContentAsJSON()),
    "\r\n--" + boundary + "--"].join('');

  var request = gapi.client.request({
    path: path,
    method: method,
    params: {
      uploadType: 'multipart'
    },
    headers: {
      'Content-Type': 'multipart/related; boundary="' + boundary + '"'
    },
    body: body
  });

  request.execute(file);
};

1 个答案:

答案 0 :(得分:1)

在使用v3时,终点URL路径应为

var path = "/upload/drive/v3/files";

对于v2,引用位于https://developers.google.com/drive/v2/web/file#uploading_thumbnails它具有不同的结构/语法

顺便提一下,请注意“如果云端硬盘可以从文件生成缩略图,那么它将使用生成的缩略图并忽略您上传的任何内容。”

我还发现您的缩略图不符合此要求:“缩略图的最小宽度为220px。”

您可以尝试使用以下内容,即220x20像素

"iVBORw0KGgoAAAANSUhEUgAAANwAAAAUCAYAAADm4VNYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABaSURBVHhe7dMxAcAgEMDALzo61r-zaoAFDZnulijI87_fHiCxboGA4SBkOAgZDkKGg5DhIGQ4CBkOQoaDkOEgZDgIGQ5ChoOQ4SBkOAgZDkKGg5DhIGQ4yMwcJVwCVCif97cAAAAASUVORK5CYII"