我使用节点js构建了一个简单的服务器.我希望发送一个包含图像的html.
好的,所以我知道如何发回一个html文件.我知道如何发回图像.
当我用其中的html响应发送<img src = 'green2.jpg'>时,页面加载了一个损坏的图像.
有任何想法吗?
相关代码:
var net = require ('net');
var url = require('url');
var fs = require('fs');
var server = net.createServer(function (socket) {
socket.on('end', function() {
console.log('server disconnected');
});
socket.on('data', function(data) {
get();
});
var get = function (parse) {
fs.readFile('example.html', function(err, data) {
if (err) throw err;
socket.write('HTTP/1.0 200 OK\r\nDate: Fri, 31 Dec 1999 23:59:59 GMT\r\nContent-Type: text/html\r\n\r\n');
socket.write(data);
socket.end();
});
}
});
server.listen("8888");
Run Code Online (Sandbox Code Playgroud)
您当前的代码是这样说的:
无论何时我收到任何请求,请发送example.html的内容.
如果有人要求/whatever.jpg他们将获得example.html的内容,当然这将显示一个破碎的图像.
如果你想使用node.js服务器静态文件,你可能想要使用像Express.js这样的东西,使用express.static这里引用的中间件自动处理它:http:
//expressjs.com/api.html#app.use
显然,"use express"不是你问题的答案,但使用pure node.js的问题答案可能是以下之一:
req.url来确定服务器正在查找哪个文件,并使用类似于您的文件发送它fs.readFile('example.html'),但也可以读取图像文件.