createReadStream发送文件http

Mar*_*rio 3 file stream node.js

我正在尝试打开一个img文件并通过http发送它.我已经读过这样做的最佳方法是creatReadStream,因为它是异步的,性能更好.

这是我的代码:

var file = fs.createReadStream(image);

    file.on("error", function(err){
        ...
    });

    res.writeHead(200, {"Content-Type" : "image/png"});

    file.on("data", function(data) {
        res.write(data);
    })

    file.on("end", function() {
        res.end();
    })
Run Code Online (Sandbox Code Playgroud)

我怎么知道文件大小让res知道才能在标题中发送它?

我不喜欢没有回写的写头,我该怎么办?

谢谢.

Dan*_* D. 5

res.writeHead()呼叫是在正确的地方,但事件监听器可以被替换file.pipe(res);为你只从读取流的写入流转发数据res.此外,HTTP响应代码202似乎不适合为什么不使用200.

var file = fs.createReadStream(image);
res.writeHead(200, {"Content-Type" : "image/png"});
file.pipe(res);
Run Code Online (Sandbox Code Playgroud)


way*_*yne 5

var stat = fs.statSync('path/to/imagefile');
response.writeHead(200, {
  'Content-Type' : 'image/png',
  'Content-Length': stat.size
});
fs.createReadStream('path/to/imagefile').pipe(response);
Run Code Online (Sandbox Code Playgroud)