javascript - 尝试使用 javascript 将文件缩略图设置到 Google Drive

标签 javascript google-drive-api

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

为了创建网络安全的 Base64 图像,我使用在线转换器将一个简单的红方 block 图像转换为 Base64,生成了

数据:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP4z8DwHwAFAAH/VscvDQAAAABJRU5ErkJggg==

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

iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP4z8DwHwAFAAH_VscvDQAAAABJRU5ErkJggg

然后,我将以下内容添加到请求中的原始 header 中:

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

但是,我在 Google 云端硬盘的列表或 GridView 中都看不到我的文件的任何缩略图。

对发生的事情有什么想法吗?

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

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);
};

最佳答案

由于您使用的是 v3,端点 URL 路径应该是

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

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

<小时/>

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

<小时/>

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

您可以尝试使用以下尺寸,即 220x20 像素

“iVBORw0KGgoAAAANSUhEUgAAANwAAAAUCAYAAADm4VNYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAABaSURBVHhe7dMxAcAgEMDALzo61r-zaoAFDZnulijI87_fHiCxboGA4SB kOAgZDkKGg5DhIGQ4CBkOQoaDkOEgZDgIGQ5ChoOQ4SBkOAgZDkKGg5DhIGQ4yMwcJVwCVCif97cAAAAASUVORK5CYII"

关于javascript - 尝试使用 javascript 将文件缩略图设置到 Google Drive,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38902765/

相关文章:

javascript - 使用运行时逻辑链接 Node.js 流

Python GAE 上传到 Google Docs

java - 实时 API Java 支持和示例

java - Google Drive API - 上传问题 - "bad request"

android - 从 Google 云端硬盘下载图像文件

javascript - 在 JavaScript 函数参数中传递双引号

javascript - 如何从 C# 代码后面调用本地存储的 javascript 函数

python - Google Drive API v3 更改文件权限并获取可公开共享的链接 (Python)

javascript - 如何使用 JavaScript 为简单的进度条制作动画?

javascript - 使用 jQuery 将两个标签 append 到同一行