node.js / google 驱动 sdk v3:访问 webContentLink(和所有图像元数据)

node.js / google drive sdk v3: access to webContentLink (and all image metadata)

我在驱动器 v3 中成功创建了一个图像文件,但无法检索该文件的 URI;我期待在成功中找到它 response_object。

我确实在 response_object 中找到了文件 ID,我可以使用它来构建显示图像的 URI:

https://drive.google.com/file/d/0Bw4DMtLCtPMkNERiTnpVNDdQV2c/view

我想将 'an official/correct' URI 交给 google Cloud Vision API 作为图像源。我想我正在寻找 webContentLink v3 文件元数据。我想,更一般地说,我看不到如何获取我刚刚创建的文件的所有元数据(如 https://developers.google.com/drive/v3/reference/files 中所述)。

        var newFileMetadata = {
          'name': unique_file_name,
          description: options.multipart,
          useContentAsIndexableText: false,
          parents: [ file.id ]
        };

        var media = {
          mimeType: 'image/jpg',
          body: fs.createReadStream(options.src_dir + '/' + sourceFile),
          viewersCanCopyContent: true,
          writersCanShare: true
        };

        var request_object = drive.files.create({
            auth: auth,
            resource: newFileMetadata,
            media: media,
            fields: ['id']
            },
            function(err, response) {
              if (err) {
                console.log('drive.files.create error: %s %s', err, response);
                return;
              } else {
                // file create success; get response
                console.log('dump the response\n %s', JSON.stringify(response));
              }
            }
          );  // end of drive.files.create()

并且控制台输出是(带有 cr 以提高可读性):

转储 request_object

{"uri": {"protocol":"https:", "slashes":是的, "auth":空, "host":"www.googleapis.com", "port":空, "hostname":"www.googleapis.com", "hash":空, "search":"?fields=id&uploadType=multipart", "query":"fields=id&uploadType=multipart", "pathname":"/upload/drive/v3/files", "path":"/upload/drive/v3/files?fields=id&uploadType=multipart", "href":"https://www.googleapis.com/upload/drive/v3/files?fields=id&uploadType=multipart"}, "method":"POST", "headers":{"Authorization":"Bearer ya29.GlxfB18oVtG6A3j7cXzSq17-RSmj9-2BlQm4zHD5sPzKkfhRM1FxlxUHc9mxWaka1N2fBiTJun-SYLB8ewuc63XVbUo01q0bS2FiS6iJTq9O1h9FQWfoO5r8E6z_6Q", "User-Agent":"google-api-nodejs-client/0.10.0","host":"www.googleapis.com", "transfer-encoding":"chunked", "content-type":"multipart/related; 边界=d6cef3f5-2246-5654-ac1f-d00561be5e8a"} }

转储响应 {"id":“0Bw4DMtLCtPMkNERiTnpVNDdQV2c”}

回顾一下:

非常感谢。

新信息:我试过单独drive.files.get()

                drive.files.get({
                  auth: auth,
                  fileId: response.id
                },
                function(err, response) {
                  if (err) {
                  console.log('drive.files.get error: %s %s', err, response);
                  return;
                  } else {
                  // file create success; get properties
                  console.log('get properties\n %s', JSON.stringify(response));
                  }
                });

我确实收到了一些元数据(但不是大图)、控制台输出、新上传:

获取属性 {"kind":"drive#file","id":"0Bw4DMtLCtPMkWFdTMUVwY2tRZ2c","name":"2017-06-04T17:57:42.189Zlovelock.png","mimeType":"image/png"}

使用Files.get并在'field'参数中指定你想要得到webContentLink。它会 return 就是这样。使用文档中的试用。

可在 Files resource 中找到完整的元数据列表。

出于测试目的,通过 fileId here 和 运行 执行。