Open haroot opened 6 years ago
so uploaded = lastCursor (as i assumed its a marker on upload progress) total = length ( length = parseInt((content.length - 1) / chunkSize, 10) + 1; )
so why is my length = 1 and lastCursor = 0 ?
if (Buffer.isBuffer(content)) {
var contents = [];
length = parseInt((content.length - 1) / chunkSize, 10) + 1;
for (var i = 0 ; i < length; i++) {
contents.push(content.slice(i * chunkSize, (i + 1) * chunkSize));
}
async.eachSeries(contents, function(buf, callback) {
self.emit('transfer', buf, lastCursor, length);
sftp.write(handle, buf, 0, buf.length, lastIndex, function(err) {
lastIndex += buf.length;
lastCursor += 1;
callback(err);
});
}, function(err) {
sftp.close(handle, callback);
});
obviously if we self.emit inside sftp.write before callback(err); we get output: At scp_put transfer <Buffer XX XX XX XX XX XX XX ... > 1 1
var client = new Client({ host: config.host, username: config.username, privateKey: config.privateKey, });
client.on('transfer', function (buffer, uploaded, total) { console.log(buffer, uploaded, total, new Date()); });
scp(config.localPath, { host: config.host, username: config.username, privateKey: config.privateKey, path: config.path }, client, err => { spinner.stop(); if (!err) { console.log(chalk.green("部署完毕")) } else { console.log("err", err) } })
transfer (buffer, uploaded, total) on successful transfer i get ouput like
At scp_put transfer <Buffer XX XX XX XX XX XX XX ... > 0 1 why is uploaded giving me a 0 and I assume 1 is for total number of files?
I was expecting uploaded to give me values that are a fraction of the total aka so I can use it for a progress bar...
aka uploaded = 999kb total = 1000kb so 999/1000 = % progress...
any way I can implement an upload progress bar using the low lever or high level API ? also how do I listen to events using the high level api?