获取Google Drive NodeJS客户端的上传进度?

我们从req = drive.files.insert获取请求对象后如何使用它查找file upload进度?

我通过多次调用req stringsearch它,但无济于事。

 function uploadFile(){ var path = untildify("~/workspace/incomplete/aw.jpg"); var drive = google.drive('v2'); var req = drive.files.insert({ resource: { title: 'aw.jpg' }, media: { body: fs.createReadStream(path) }, auth: oauth2Client }, function(err, response) { if (err) console.log(err); // else // console.log(response); }); console.log(req); } 

这是如何完成的

 function uploadFile(){ var path = untildify("~/workspace/a.jpg"); var drive = google.drive('v2'); console.log('start upload'); var req = drive.files.insert({ resource: { title: "a.jpg" }, media: { body: fs.createReadStream(path) }, auth: oauth2Client }, function(err, response, body) { if (err) { console.log(err); } else { console.log('finish upload'); clearInterval(q); } }); var q = setInterval(function () { console.log("Uploaded: " + req.req.connection.bytesWritten); }, 250); } 

参考: Node.js进度指示器反馈 – 通过回答Riel

特别感谢Ryan Seys帮助我。

每个对API的request object都会返回一个request object ,允许您跟踪请求的进度或有关请求的一般信息。 您需要为收到的请求部分添加处理程序。

这里是示例代码:

 part.addListener("request", function(received) { // Calculate upload progress var progress = (stream.bytesReceived / stream.bytesTotal * 100).toFixed(2); var mb = (stream.bytesTotal / 1024 / 1024).toFixed(1); sys.debug("Uploading " + mb + "mb (" + progress + "%)"); 

你可以在这个博客中find文档。