Загрузка файлов на сервер с прогрессом

sanu0074

Новичок
Я пытаюсь загрузить файлы на сервер (node.js) таким образом (ниже приведены части трех файлов, роутер, контроллер и скрипт который грузит файлы)
Код:
///router
var multipart = require("connect-multiparty");
var multipartMiddleware = multipart();
//.....
router.post("/save", multipartMiddleware, function(req, res, next) {
    var s = new Settings(res,req);
    s.saveSection();
});


//controller
var File = require('fileuploader');
//more action
    this.saveSection = function(){
//more action
        var files = new File(req.files);
            log.info(req.files);
            files.moveUploadedFiles(FOLDER,function(upload){
                //moreactions...
            });
    };



//uploader
//moreactions....
this.moveUploadedFiles = function(dest,cb){
        async.waterfall ([
            function (cb) {
                $this.createFolder(dest,function(){
                    cb(null);
                });
            }
        ], function () {
            var infile = [];
            var outfile = [];
            var uploadSize = [];

            for (var i in files) {
                (function(i) {
                    var path = dest + '/' + files[i].originalFilename;
                    infile[i] = fs.createReadStream(files[i].path);
                    outfile[i] = fs.createWriteStream(path);
                    infile[i].on('data',function(data) {
                        if(!uploadSize[i]){
                            uploadSize[i] = 0;
                        }
                        uploadSize[i] += data.length/1024;
                        console.log(files[i].originalFilename + ': '+parseInt(uploadSize[i])+'/'+(parseInt(files[i].size/1024)) + ' Kb');
                    });
                    infile[i].pipe(outfile[i]);
                })(i);
            }
            return cb(1);
        });
    };
Суть в том что, файлы сначала прогружаются, а потом приходит ответ и я вижу в консоли прогресс копирования их из временной директории в целевую. Как сделать stream на входе где-нибудь в контроллере или на уровне роутера, не знаю как лучше, но по-мойму лучше делать это в скрипте uploader. Т.е. задача в том, чтобы в момент сабмита формы, сразу начиналась загрузка с помощью stream, для того чтобы этот прогресс можно было выводить, а не так как сейчас - я вижу прогресс копирования файла уже когда он на сервере... Как это реализовать? Может быть в пределах одного запроса, передаваемые файлы есть возможность читать асинхронно?
 
Сверху