我有一个Electron应用程序,它使用node-ftp将已删除的文件上传到预定义的服务器。上传就像一个魅力,但尽管阅读了一些建议我无法弄清楚如何获得进度条的实际进度信息。 到目前为止我的上传代码:
var ftp = new Client();
let uploadfile = fs.createReadStream(f.path);
let newname = uuid(); //some function I use for renaming
ftp.on('ready', function () {
ftp.put(uploadfile, newname, function (err) {
if (err) throw err;
ftp.end();
});
});
c.connect({user: 'test', password: 'test'});
我总是偶然发现监控数据'事件,但无法找到访问它的方式或位置(正如您所看到的,我对JavaScript很新)。
答案 0 :(得分:9)
知道了。我在streams with percentage complete
中找到了答案我的代码更改为
var ftp = new Client();
let uploadfile = fs.createReadStream(f.path);
let newname = uuid(); //some function I use for renaming
ftp.on('ready', function() {
uploadfile.on('data', function(buffer) {
var segmentLength = buffer.length;
uploadedSize += segmentLength;
console.log("Progress:\t" + ((uploadedSize/f.size*100).toFixed(2) + "%"));
});
ftp.put(uploadfile, newname, function(err) {
if (err) throw err;
ftp.end();
});
});
c.connect({user: 'test', password: 'test'});
我在控制台中上传了百分比。从这里开始,它只是图形输出的一小步。
答案 1 :(得分:0)
在客户端,您可以为上传流创建字节数(http://www.experts.exchange.com/questions/24041115/upload-file-on-ftp-with-progressbar-and-time-left.html)
也许您可以使用stream-meter
(https://www.npmjs.com/package/stream-meter)或progress-stream
(https://www.npmjs.com/package/progress-stream)等npm来管理文件流以提供进度条。我不确定,因为我不知道npms的内部结构。 progress-stream
中的transferred()
是一个完全符合
一种非常准确的方法是在服务器上安装代码,向浏览器提供反馈(http://www.stackoverflow.com/questions/8480240/progress-bar-for-iframe-uploads)