我想在上传大文件时显示上传进度。我正在使用 googleapis npm 包,drive_v3。同样的问题询问下载进度并回答了使用流的一些解决方法。不幸的是我无法让它与上传一起工作。
示例代码在这里
// drive:drive_v3.Drive
let response = await this.drive.files.create({
media: {
body: buffer
},
fields: 'id',
}, {
// this event is deprecated and ignored :C
onUploadProgress(ev) {
}
})
我尝试了 onUploadProgress 事件,该事件已弃用,无法正常工作。尝试了一些流方法但没有成功。
我设法在nodejs google Drive api 上获取上传进度。正如我之前所说,通过使用 progress_stream 包使用基于流的解决方法。
let filePath = "someFilePath.zip"
let stream = fs.createReadStream(filePath);
let stat = fs.statSync(filePath);
let progressable = progress_stream({ length: stat.size, time: 100, })
progressable.on("progress", (e) => {
// progress event...
console.log("upload progress", e.percentage)
});
stream.pipe(progressable)
let body = progressable;
//drive:drive_v3.Drive
let response = await this.drive.files.create({
media: {
body: body
})