【问题标题】:Node js. sending an html that contains an image节点.js。发送包含图像的 html
【发布时间】:2012-12-07 05:15:44
【问题描述】:

我已经使用 node js 构建了一个简单的服务器。 我希望发送一个包含图片的 html。

好的,所以我知道如何发回一个 html 文件。 而且我知道如何发回图片。

当我发送带有<img src = 'green2.jpg'> 的html 响应时, 页面加载时图像损坏。

有什么想法吗?

相关代码:

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");

【问题讨论】:

  • 可能只是你的图片路径坏了,与node.js无关。
  • 当我打开 html 文件时它加载正常
  • 您的路线设置如何?意思是,服务器如何知道根据用户请求返回什么。
  • 你的问题不是 example.html 而是你不能去localhost:YOURPORT/green2.jpg
  • @oopsi 你需要分享你的服务器代码的其余部分

标签: html node.js


【解决方案1】:

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

每当我收到任何请求时,请发送 example.html 的内容。

如果有人要求 /whatever.jpg,他们将获得 example.html 的内容,这当然会显示损坏的图像。

如果您想使用 node.js 为静态文件提供服务器,您可能需要使用 Express.js 之类的东西,它使用此处引用的 express.static 中间件自动处理它: http://expressjs.com/api.html#app.use

显然“使用 express”不是您问题的答案,但使用纯 node.js 对您的问题的答案是以下之一:

  1. 安装一个像 node-static 这样的模块来处理像图像这样的静态文件。 Tutorial here
  2. 在 req.url 上使用 switch 语句来确定服务器正在查找的文件,并使用类似于 fs.readFile('example.html') 的方式将其发送出去,但也可以读取图像文件。

【讨论】:

  • 很棒的答案。让我意识到比我希望的更多。非常感谢
【解决方案2】:

问题在于节点不知道您的图像,并且无法像普通网络服务器那样提供开箱即用的静态文件。使用像 express 这样的框架可以让这变得更容易。

【讨论】:

    猜你喜欢
    • 2015-08-27
    • 1970-01-01
    • 2021-08-17
    • 2017-02-01
    • 2016-01-22
    • 2016-11-25
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多