Backend/Node.js

[Node.js] node.js html 열기(+ 이미지)

seoooc 2022. 3. 30. 18:48

 

 

 

http://127.0.0.1:10007/home으로 접속하면 home.html이 열리도록 한다.

html 파일 읽고 쓰기 + 이미지 파일 읽고 쓰기이 이뤄져야 함

 

 

home.html

<!DOCTYPE html>
<html lang="kr">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
<style>
    img{
        width:200px;
    }
</style>
</head>
<body>
    <h1>노드를 이용한 홈페이지</h1>
    <a href="/subpage"><img src="./img/t.jpg"/></a>
    <img src="./img/tab2_3.png"/>
    <img src="./img/tab2_4.png"/>
    <img src="./img/coco.jpg"/>
</body>
</html>

 

첫 번째 이미지를 클릭하면 /subpage로 접속

subpage로 접속하면 subpage.html 내용을 보내준다.

 

 

 

node11_html_image_response.js

var http = require("http");
var fs = require("fs");

/*
    모듈 추가하는 법 : mime
    npm 명령어를 이용하여 추가
    >npm install mime@2
*/
var mime = require("Mime");

var server = http.createServer(function (req, res) {
    var addr = req.url;
    console.log(addr);

    if (addr == "/home") {
        // home.html파일의 내용을 읽고 res에 쓰기
        fs.readFile(__dirname+'/home.html', 'utf-8', function (error, data) {
            if (error) {
                console.log("파일 읽기 에러 발생");
            } else {
                res.writeHead(200, { "Content-Type": "text/html; charset=utf-8" });
                res.end(data);
            }
        });
    } else if (addr=='subpage') {
        fs.readFile(__dirname + "/subpage.html", 'utf-8', function (error, data) { 
            if (!error) {
                res.writeHead(200, { "Content-Type": "txt/html; charset=utf-8" });
                res.end(data);
            }
        });

    } else if (addr.indexOf('/img') == 0) {  // 이미지일 경우
        //마임 구하기
        var mimeType = mime.getType(addr.substring(1));
        console.log(mimeType);
        // 이미지 파일 읽기
        fs.readFile(__dirname + addr, function (error, imgData) {
            if (!error) {
                res.writeHead(200, { "Content-Type": mimeType });
                res.end(imgData);
            }
        });
    }
});

server.listen(10007, function () {
    console.log("server start.... http://127.0.0.1:10007/home");

});

 


 

mime 모듈 추가하기
터미널에 npm install mime@2 입력

 

 

mime 객체 생성

var mime = require("Mime");

 


 

콘솔에 찍힌 /img/~~~는 addr 출력값이다.

 

 

체크된 부분이 mimeType 값

클라이언트에게 전송된 문서의 다양성을 알려주기 위한 메커니즘

이미지 Type을 알아내기 위해 substring을 사용해서 맨 앞의 /를 제외한 나머지 경로만 getType에 넣어준다.

 

 

 

 

 

 

짱구 이미지 클릭하면 subpage로 이동