节点js.发送包含图像的html

oop*_*psi 2 html node.js

我使用节点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)

Jam*_*son 5

您当前的代码是这样说的:

无论何时我收到任何请求,请发送example.html的内容.

如果有人要求/whatever.jpg他们将获得example.html的内容,当然这将显示一个破碎的图像.

如果你想使用node.js服务器静态文件,你可能想要使用像Express.js这样的东西,使用express.static这里引用的中间件自动处理它:http: //expressjs.com/api.html#app.use

显然,"use express"不是你问题的答案,但使用pure node.js的问题答案可能是以下之一:

  1. 安装像node-static这样的模块来处理像图像这样的静态文件.这里的教程
  2. 使用switch语句req.url来确定服务器正在查找哪个文件,并使用类似于您的文件发送它fs.readFile('example.html'),但也可以读取图像文件.