我将文件上传到Node.js Restify服务器,我试图将一些进度信息发送回客户端。
在下面的示例中,文件上传成功,但进度点(。)不会显示,直到整个文件上传并且已发送res.end()。
是否可以写入响应流并将状态信息发送回客户端?
var restify = require('restify');
var fs = require('fs');
function uploadFile(req, res, next) {
var path = req.params.devicename;
var filename = req.params.filename;
console.log("Upload file");
var writeStream = fs.createWriteStream(path + "/" + filename);
var r = req.pipe(writeStream);
res.writeHead(200, {"Content-type":"text/plain"});
r.on("drain", function() {
res.write(".", "ascii");
});
r.on("finish", function () {
console.log("Upload complete");
res.write("Upload complete");
res.end();
});
next();
}
// *************** start Restify server *********************
var server = restify.createServer();
server.post('/api/uploadfile/:devicename/:filename', uploadFile);
server.listen(8080, function() {
console.log('%s listening at %s', server.name, server.url);
});
由于
答案 0 :(得分:0)
@Rick已在此处回答:Node.js + restify cant upload file
这个问题的主要原因在于你无法开箱即用,因为正文解析器会将整个文件拉进去。也就是说,相同的SO文章引用了这篇文章,它可以满足您的需求:{{3} }