使用 google 驱动器完成可恢复上传后的 return 文件 ID

return file id after resumable upload finished with google drive

我正在我的应用程序中集成 google 驱动器 API 并且我正在使用可恢复上传方法 但我不知道如何在可恢复的响应正文中完成上传后获取文件 ID

这是我获取可恢复 uri 的代码

const body = JSON.stringify({
        name:file.originalname,
        mimeType:file.mimetype,
        parents:[parent folder id]
    })

    const url = 'https://www.googleapis.com/upload/drive/v3/files?uploadType=resumable'
    const option = {
        method: 'post',
        body,
        headers: {
          Authorization: `Bearer ${access_token}`,
         'Content-Type': 'application/json; charset=UTF-8',
        }
    }
    const response = await fetch(url, option)
    const resumableURI = response.headers.get('location')

这是我上传文件块的代码

const options = {
            method: 'PUT',
            headers: {
            'Content-Length': file.size,
            'Content-Range': `bytes ${start}-${end - 1}/${length}`,
            },
            body: file.buffer, // contents of the chunk
        };
 
        const response  = await fetch(RESUBMALEURI, options)

这是上传完成后api给我的回复

response: Response {
size: 0,
timeout: 0,
[Symbol(Body internals)]: { body: [PassThrough], disturbed: false, error: null },
[Symbol(Response internals)]: {
     url: 'https://www.googleapis.com/upload/drive/v3/files? 
           uploadType=resumable&upload_id=ADPycdvajyaSOgYUjPmFgZIbi- 
          vbjM0U7xHe0yLy1eahXOC1Zq06K7ZFN2O0c_IKRdEJfa-WFc8DwE814cjV0nhCv0U',
    status: 200,
    statusText: 'OK',
    headers: [Headers],
     counter: 0
    }
}

}

是否有任何选项我可以添加到 resubmale uri 的请求或将请求本身上传到 return 最后的文件 ID

当我看到你的脚本和额外的响应值时,我担心你可能已经使用 console.log(response)const response = await fetch(RESUBMALEURI, options) 检索了响应值。如果我的理解是正确的话,那么很遗憾,得到了这样的回应。

如果您用于断点续传文件的脚本工作正常并且上传已完全完成,那么进行以下修改怎么样?

发件人:

const response  = await fetch(RESUBMALEURI, options)

收件人:

const response  = await fetch(RESUBMALEURI, options)
const res = await response.json();
console.log(res);
// console.log(res.id); // If you want to retrieve only the file ID, you can use this.
  • 这样修改,最后一次请求时,可以得到如下值

      {
        kind: 'drive#file',
        id: '###',
        name: '###',
        mimeType: '###'
      }
    

注:

  • 顺便说一下,在您的第一个请求中,位置被放入 resumableURI 的变量中。但是在用于上传文件内容的脚本中,您使用 RESUBMALEURI 作为端点。如果你的实际情况使用这个,请修改这个。请注意这一点。

参考: