通过http-node.js发送jpg时出现问题

通过http-node.js发送jpg时出现问题,http,node.js,jpeg,fs,Http,Node.js,Jpeg,Fs,我正在尝试编写一个简单的http web服务器,它(除其他功能外)可以向客户端发送请求的文件。 发送一个普通的文本文件/html文件就像一个符咒。问题在于发送图像文件。 以下是我的部分代码(在解析MIME类型后,包括fs node.js模块): 为什么打开http://localhost:/test.jpg?以下是一个完整的示例,介绍如何以最简单的方式使用Node.js发送图像(我的示例是一个gif文件,但它可以用于其他文件/图像类型): 更新: util.pump已经被弃用了一段时间,您可以使

我正在尝试编写一个简单的http web服务器,它(除其他功能外)可以向客户端发送请求的文件。
发送一个普通的文本文件/html文件就像一个符咒。问题在于发送图像文件。
以下是我的部分代码(在解析MIME类型后,包括fs node.js模块):


为什么打开<代码>http://localhost:/test.jpg?

以下是一个完整的示例,介绍如何以最简单的方式使用Node.js发送图像(我的示例是一个gif文件,但它可以用于其他文件/图像类型):

更新:

util.pump
已经被弃用了一段时间,您可以使用streams来完成以下操作:

fs.createReadStream(filePath).pipe(req);

您是否100%确定文件存在于
路径
?您应该
console.log(path)
并确保它指向一个存在的文件,并且其中包含数据。@DaveRandom-是的-我想说的是处理错误,而不仅仅是假设它工作。@DaveRandom是的,我确定它在那里,在调用那段代码之前,我正在确认文件确实存在。你是说你从服务器上什么也没有得到吗?如果您以类似的方式查看请求/响应,您会看到从服务器返回哪些标题?@DaveRandom是否有类似的内容,但对于chrome?我将您的图像文件更改为我的jpg文件,并将内容类型更改为“image/jpeg”,但是什么也没发生。现在我看到stat.size是0。为什么呢?你用的是什么节点版本?那图像可读吗?腐败吗?没关系,它现在是这样工作的(我用了一张糟糕的照片)。我必须在程序中使用util.pump吗?据我所知,这是推荐的方法(使用pump),即使是Connect静态中间件也在使用它:
var http = require('http'),
    fs = require('fs'),
    util = require('util'),
    file_path = __dirname + '/web.gif'; 
    // the file is in the same folder with our app

// create server on port 4000
http.createServer(function(request, response) {
  fs.stat(file_path, function(error, stat) {
    var rs;
    // We specify the content-type and the content-length headers
    // important!
    response.writeHead(200, {
      'Content-Type' : 'image/gif',
      'Content-Length' : stat.size
    });
    rs = fs.createReadStream(file_path);
    // pump the file to the response
    util.pump(rs, response, function(err) {
      if(err) {
        throw err;
      }
    });
  });
}).listen(4000);
console.log('Listening on port 4000.');
fs.createReadStream(filePath).pipe(req);