0

ブラウザに表示する必要のある画像pic.jpegがあります。これが私が書いたコードの抜粋です。

var mimeTypes = {
            '.js' : 'text/javascript',
            '.css' : 'text/css',
            '.gif' : 'image/gif',
            '.jpeg': 'image/jpeg',
            '.html': 'text/html'
        };

    contenttype = mimeTypes[path.extname(req.url)];    
    pathname = "." + req.url;

var stream = fs.createReadStream(pathname);
        stream.on('error', function(error) {
            res.writeHead(500);
            res.end();
            return;
        });
            res.setHeader('Content-Type', contenttype);
            res.writeHead(200);
            stream.on('open', function () {
                // This just pipes the read stream to the response object (which goes to the client)
                util.pump(stream, res, function(error) {
                //Only called when the res is closed or an error occurs
                console.log("Error:");
                res.end();
                return;
                });
            });

上記のコードはほとんどの場合機能し、画像は正常に表示されますが、画像が欠落している場合があります。

4

2 に答える 2

2

node.jsを介して静的ファイルを提供するべきではありません。同じためにNginxまたは同様のWebサーバーの使用を検討する必要があります。

または、モジュールを使用connectして静的ファイルを提供することもできます

var server = connect()
  .use('/static', connect.static(__dirname + '/static'))
  .use(router)
  .listen(port);

名前を付けて新しいディレクトリをstatic作成し、その中にすべてのファイルを配置して、次の方法でそれらにアクセスできるようにします。/static/images/testimage.jpg

于 2013-02-18T13:11:27.827 に答える
0

自分で提供する静的ファイルを実装するのではなく、Expressのようなライブラリを使用してみませんか?ここで使用されていることがわかります:Express Static nodejsまたはAPIをここで参照してください:http://expressjs.com/api.html(「static」を検索)。コードが大幅に少なくなり、信頼性が高くなります。

于 2013-02-18T13:10:18.337 に答える