使用 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
作为端点。如果你的实际情况使用这个,请修改这个。请注意这一点。
参考:
我正在我的应用程序中集成 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
作为端点。如果你的实际情况使用这个,请修改这个。请注意这一点。