node.js读取图文页面,同时读取文字,图片

版权声明:本文为原创文章,转载请标明出处

一个简单的html页面:

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    登录页面login
    <img src="./showimg" />
</body>
</html>

在这里将通过路由的方式来读取图片和文字。

test8.js:

var http = require('http');
var url = require('url');
var router = require('./router')
http.createServer(function(request,response){
    // response.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});
    if(request.url!="/favicon.ico"){  //清除2次访问
        var pathname = url.parse(request.url).pathname;
        pathname = pathname.replace(///,'');//替换掉前面的/
        console.log(pathname);
        router[pathname](request,response);
    }
}).listen(8000);
console.log("is running")

逻辑是这样的:在浏览器输入127.0.0.1:8000/login,通过路由识别出login后,调用router.js中login的方法,在这里面去读取login.html,然后再把内容发送回给客户端。当客户端识别到<img src=" "/>时,又会再次发送一个请求到server(服务端),将src里的路由提交到router.js里,服务端接着去读取图片,将图片以二进制流的方式发送给浏览器。

router.js:

var optfile = require('./optfile');
function getRecall(req,res){
    res.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});
    function recall(data){
            res.write(data);
            res.end('');
    }
    return recall;
}
module.exports={
    login:function(req,res){
        // function recall(data){
        //     res.write(data);
        //     res.end('');
        // }
        recall = getRecall(req,res);
        optfile.readfile('./views/login.html',recall);
    },
    
    showimg:function(req,res){
        res.writeHead(200,{'Content-Type':'image/jpeg'});
        optfile.readImg('./imgs/scenery.png',res);
    }
}

"./views/login.html"就是上面的login页面

optfile.js:

var fs = require('fs');
var url = require('url');
module.exports={ 
    readImg:function(path,res){
        fs.readFile(path,'binary',function(err,file){  //binary指二进制流文件
            if(err){
                console.log(err);
            }else{
                res.write(file,'binary');
                res.end();
            }
        });
        console.log("异步方法执行完毕");
    }
}
未来的你会感谢现在努力的你
原文地址:https://www.cnblogs.com/cjxblogs/p/6810458.html