Connect-busboy:当pipe道文件写入蒸汽时,根据types文件为空或不正确

我正在使用connect-busboytesting一个简单的file upload。 我注意到,当我上传一个PNG格式的文件,file upload,但内容不正确 – 我无法打开它。 我已经在源文件和目标文件上做了md5sum,它们是不同的。 当我上传一个仅包含15个字节的文本文件时,我看到文件被上传到./public/目录,但是它是空的。

客户端代码:

<form method="post" enctype="multipart/form-data" action="/api/upload"> <input type="file" name="thumbnail"/> <input type="submit"/> </form> 

服务器端

 //includes omitted for readability var Busboy = require("connect-busboy"); app.use(Busboy()); //Add entires to places app.post("/api/upload", function (req, res, next) { req.pipe(req.busboy); var filesNames = []; req.busboy.on('file', function(fieldname, file, filename) { file.on("data", function(data) { var fstream = FS.createWriteStream('./public/' + filename,{flags: "a"}); file.pipe(fstream); filesNames.push(filename); fstream.on("close", function() { console.log("Closing fstream"); }); }); }); req.busboy.on("finish", function () { res.writeHead(200, {'Connection': 'close'}); for (var i = 0; i < filesNames.length; i++) { res.write(filesNames[i] + "\n"); } console.log("busboy done"); res.end("Done.."); }); }); 

我已经看过关于公务员的多个post,所以我在问这个问题之前做了我的研究。

还要注意:如果我要logging数据,我可以看到字节按预期进入,但是它们没有写入文件(至less在.txt文件中)。

我究竟做错了什么?

每次获取一段文件数据时,都不应创build新的可写入stream。 可能这就够了

 req.busboy.on('file', function(fieldname, file, filename) { var ws = FS.createWriteStream('./public/' + filename, {flags: "a"}); file.pipe(ws); filesNames.push(filename); });