3

ノード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");
4

2 に答える 2

6

あなたの現在のコードはこれを言っています:

リクエストがあった場合はいつでも、example.html の内容を送信してください。

誰かが /whatever.jpg を要求した場合、example.html のコンテンツを取得することになりますが、もちろん壊れた画像が表示されます。

node.js を使用して静的ファイルをサーバー化したい場合は、ここで参照されているミドルウェア を使用して自動的に処理するExpress.jsのようなものを使用することをお勧めします: http://expressjs.com/api.html#app.useexpress.static

明らかに「エクスプレスを使用する」はあなたの質問に対する答えではありませんが、純粋な node.js を使用した質問に対する答えは次のいずれかです。

  1. イメージなどの静的ファイルを処理するには、node-static などのモジュールをインストールします。チュートリアルはこちら
  2. switch ステートメントを使用してreq.url、サーバーが探しているファイルを特定し、に似たものを使用して送信しますfs.readFile('example.html')が、画像ファイルを読み取ることもできます。
于 2012-12-06T21:15:44.403 に答える
4

問題は、ノードがイメージを認識せず、平均的な Web サーバーのようにすぐに使用できる静的ファイルを提供できないことです。Expressのようなフレームワークを使用すると、これがはるかに簡単になります。

于 2012-12-06T21:12:30.117 に答える