nodejs - fs.createReadStream().pipe,如何知道文件大小问题

use*_*986 4 http file httpresponse node.js

我正在编写自己的HTTP模块,如果我需要用二进制文件响应,例如.jpg,

我使用以下方式加载文件:body = fs.createReadStream(pathOfFile).

当我生成响应时,我使用:body.pipe(socket);

但作为其HTTP响应,我想添加一个Content-Length标题.

我找不到一个简单的方法,fs.stat不会立即给出结果,而是在我调用管道之后.

无论如何要知道在Content-Length标题中发送什么 .?

谢谢.

ale*_*lex 16

那么你应该只有在fs.stat获得大小后才发送响应并传输文件,如下所示:

fs.stat(file_path, function(error, stat) {
  if (error) { throw error; }
  response.writeHead(200, {
    'Content-Type' : 'image/gif',
    'Content-Length' : stat.size
  });
  // do your piping here
}); 
Run Code Online (Sandbox Code Playgroud)