Der Zugriff auf die raw-Datei-stream von einer Knoten-gewaltige-Datei hochladen

Ich bin erstellen einer Anwendung, die einige Datei-uploads und senden Sie Sie gerade bis zum S3. Ich würde es vorziehen, nicht auch die tmp-Datei auf meinem server, also ich bin mit dem Knox-Modul und würde gern die raw-stream von Gewaltigen und senden Sie es über Knox auf dem S3. Ich habe etwas ähnliches gemacht mit Knox um eine Datei herunterzuladen, mit diesem code:

knox.downloads.get(widget.download).on('response',function(sres){
    res.writeHead(200, {
        'Content-Type':'application/zip',
        'Content-Length': sres.headers['content-length'],
        'Content-Disposition':'attachment; filename=' + widget.download
    });
    util.pump(sres, res);
}).end();

Nun würde ich gerne etwas ähnliches in die entgegengesetzte Richtung (Datei-upload aus dem browser-S3).

So weit ich geschrieben habe, einen event-handler zu erfassen, jedes Stück von Daten aus der Datei, wie es hochgeladen wird:

var form = new formidable.IncomingForm();
form.onPart = function(part){
    if(!part.filename){
        form.handlePart(part);
    }else{
        if(part.name == 'download'){
            //Upload to download bucket
            controller.putDownload(part);
        }else{
            //Upload to the image bucket
            controller.putImage(part);
        }
        //res.send(sys.inspect(part));
    }
}
form.parse(req, function(err, fields, files){
    if(err){
        res.json(err);
    }else{
        res.send(sys.inspect({fields:fields, files:files}), {'content-type':'text/plain'});
        //controller.createWidget(res,fields,files);            
    }
});


controller.putDownload = function(part){
    part.addListener('data', function(buffer){
        knox.download.putStream(data,part.filename, function(err,s3res){
            if(err)throwError(err);
            else{
                console.log(s3res);
            }
        });
    })
    knox.downloads.putStream(part, part.filename, function(err,s3res){

        if(err)throwError(err);
        else{
            console.log(s3res);
        }
    });
}

Aber das Ereignis data nur gib mir den Puffer. So ist es möglich zu erfassen, den Strom selbst und schieben Sie es auf S3?

InformationsquelleAutor Dave Long | 2011-10-22
Schreibe einen Kommentar