我正在尝试编写一个简单的http网络服务器,(在其他功能中),可以向客户端发送请求的文件。
发送常规文本文件/ html文件可用作魅力。问题在于发送图像文件
这是我的代码的一部分(在解析MIME TYPE之后,包括fs node.js模块):
if (MIMEtype == "image") {
console.log('IMAGE');
fs.readFile(path, "binary", function(err,data) {
console.log("Sending to user: ");
console.log('read the file!');
response.body = data;
response.end();
});
} else {
fs.readFile(path, "utf8", function(err,data) {
response.body = data ;
response.end() ;
});
}
打开http://localhost:<serverPort>/test.jpg
后,为什么我所得到的都是空白页?
答案 0 :(得分:3)
这里有一个关于如何以最简单的方式使用Node.js发送图像的完整示例(我的示例是gif文件,但它可以与其他文件/图像类型一起使用):
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.');
<强>更新强>
util.pump
已被弃用了一段时间,您可以使用流来完成此操作:
fs.createReadStream(filePath).pipe(req);