使用Node.js Restify上传进度

时间:2014-09-27 22:15:37

标签: javascript node.js file-upload restify

我将文件上传到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);
});

由于

1 个答案:

答案 0 :(得分:0)

@Rick已在此处回答:Node.js + restify cant upload file

这个问题的主要原因在于你无法开箱即用,因为正文解析器会将整个文件拉进去。也就是说,相同的SO文章引用了这篇文章,它可以满足您的需求:{{3} }