パーソナルブログメモリ

個人的な簡易記録です。コンピュータ関連をメインでやってます。ようこそ!いらっしゃいませ。

Node.jsでファイルを振り分ける

2017年05月17日 | コンピュータ
Node.jsでサーバーの画像や音声ファイルにアクセスさせる場合Content-Typeを定義しないといけないらしい。

雛形のコピペでもいいのだけどもう少し楽をすることにしました。
request.urlから簡易拡張子判定を行って同じタイプのものに振り分けています。
server.listenのIPアドレスはローカルサーバのものなので変更が必要です。



Nodeの作り方毎回ググっている気がするのでメモ

(1)フォルダー作って、呼び出すhtmlと関連ファイルを集めて

(2)フォルダーを端末(ターミナル)で開いて
npm install
npm init
でnode.js環境を作成

(3)下のファイルも配置して

(4)node sv5で起動

(5)サーバのフォルダにmain.htmlがある場合はローカルネットワークのブラウザから
http://192.168.11.8:3000/main.htmlでアクセスします。
(IPアドレスは家のローカルの例です。)

クライアント側のマシン、ブラウザごとに挙動が違うのは困ったものです。

sv5.js
var http = require("http");
var fs = require("fs");

var server = http.createServer();
server.on("request", doRequest);
server.listen(3000,"192.168.11.8");
console.log("Server running at 3000");

function getRequestType(request){
  if ( request.url.indexOf(".html") != -1) {
    return "html";
  }
  if ( request.url.indexOf(".jpg") != -1) {
    return "jpeg";
  }
  if ( request.url.indexOf(".wav") != -1) {
    return "wave";
  }
  if ( request.url.indexOf(".css") != -1) {
    return "css";
  }
  return "";
}

function doRequest(request, response) {
    switch(getRequestType(request)) {
    case "html":
        fs.readFile("."+request.url, "UTF-8",
            function (err, data) {
                response.writeHead(200, {"Content-Type": "text/html"});
                response.write(data);
                response.end();
            }
        );
        break;
    case "css":
        fs.readFile("."+request.url, "UTF-8",
            function (err, data) {
                response.writeHead(200, {"Content-Type": "text/css"});
                response.write(data);
                response.end();
            }
        );
        break;
    case "wave":
        fs.readFile("."+request.url, "binary",
            function (err, data) {
                response.writeHead(200, {"Content-Type": "audio/wav"});
                response.write(data, 'binary');
                response.end();
            }
        );
        break;
    case "jpeg":
        fs.readFile("."+request.url, "binary",
            function (err, data) {
                response.writeHead(200, {"Content-Type": "image/jpeg"});
                response.write(data, "binary");
                response.end();
            }
        );
        break;
    }
};
ジャンル:
ウェブログ
コメント   この記事についてブログを書く
この記事をはてなブックマークに追加
« html5で画像の部分抽出と音を... | トップ | html5でRPGのマップを作ってみる »
最近の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。

コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。

あわせて読む

トラックバック

この記事のトラックバック  Ping-URL
ブログ作成者から承認されるまでトラックバックは反映されません。