Ich muss tar
ein Verzeichnis, und senden Sie diese an einen Remote-Endpunkt über HTTP PUT
.nodejs/fs: Schreiben eines Tar in den Speicherpuffer
Ich könnte natürlich das Tar erstellen, speichern Sie es auf der Festplatte, dann lesen Sie es erneut und senden Sie es.
Aber ich würde lieber den tar erstellen, dann pipe es in einen Puffer und senden Sie es sofort. Das habe ich nicht geschafft.
-Code bisher:
var tar = require('tar');
var fs = require("fs");
var path = "/home/me/uploaddir";
function getTar(path, cb) {
var buf = new Buffer('');
var wbuf = fs.createWriteStream(buf);
wbuf.on("finish", function() {
cb(buf);
});
tar.c({file:""},[path]).
pipe(wbuf);
}
getTar(path, function(tar) {
//send the tar over http
});
Dieser Code führt:
fs.js:575
binding.open(pathModule._makeLong(path),
^
TypeError: path must be a string
at TypeError (native)
at Object.fs.open (fs.js:575:11)
ich auch ein Array als Puffer versucht haben, verwenden, keine Freude.
uh? Es scheint, als ob Sie einen Puffer mit der Länge 0 an 'fs.createWriteStream' übergeben, was schließlich zu einem Fehler –
führen wird. Ich bin mir dessen bewusst, aber ich erstelle zuerst einen tar eines Verzeichnisses, von dem ich nichts weiß die Größe, wie sollte der Puffer zugewiesen werden? – faboolous