Node.js 文件系统流pipe到Http响应流中

简介:
复制代码
// 内置http模块,提供了http服务器和客户端功能(path模块也是内置模块,而mime是附加模块)
var http=require("http");
var fs=require("fs");
var _dirname="./html"

// 创建服务器,创建HTTP服务器要调用http.createServer()函数,它只有一个参数,是个回调函数,服务器每次收到http请求后都会调用这个回调函数。服务器每收到一条http请求,都会用新的request和response对象触发请求函数。
var server=http.createServer(function(req,resp){
    console.log("请求地址是:"+req.url);    

   if('GET'==req.method && '/images'==req.url.substr(0,7) && '.jpg'==req.url.substr(-4)){
       fs.stat(_dirname+req.url,function(err,stat){
            if(err || !stat.isFile()){
                resp.writeHead(404);
                resp.end('File not found');
                return;
            }

            serve(_dirname+req.url,'application/jpg');
       });
   }else if('GET'==req.method && '/'==req.url){
        serve(_dirname+'/index.html','application/html');
   }else{
        resp.writeHead(404);
        resp.end('Unrecongnized cmd');
        return;
   }

   function serve(path,type){
        // 告诉浏览器发送什么样的资源
        resp.writeHead(200,{"Content-Type":type});
        fs.createReadStream(path).pipe(resp);
   }
});

// 服务器开始运作监听端口
server.listen(3000,"localhost",function(){
    console.log("服务器开始运作,监听端口3000中...");
});
复制代码

 










本文转自张昺华-sky博客园博客,原文链接:http://www.cnblogs.com/xiandedanteng/p/7531609.html,如需转载请自行联系原作者


目录
打赏
0
0
0
0
64
分享
相关文章
Nest.js 实战 (四):利用 Pipe 管道实现数据验证和转换
这篇文章介绍了Nest.js框架中管道的概念和使用。管道是一种强大的功能,用于在请求数据到达控制器方法之前对其进行预处理,如转换、验证、清理等。文章详细解释了数据转换、数据验证、错误处理和一致性等管道的主要用途,并通过代码示例演示了如何使用内置管道和自定义管道。最后,文章总结了管道在提升应用健壮性和安全性方面的作用,认为合理利用管道可以加速开发周期,提高软件质量。
136 1
Nest.js 实战 (四):利用 Pipe 管道实现数据验证和转换
|
8月前
|
vue中使用 HotKeys.js 教程(按键响应、快捷键开发)
vue中使用 HotKeys.js 教程(按键响应、快捷键开发)
295 0
Node.js 文件系统
10月更文挑战第6天
41 2
node反向代理,解决跨域(http-proxy-middleware)
使用node.js和http-proxy-middleware库实现反向代理,解决跨域问题,允许前端请求通过代理访问不同端口的服务。
274 3
空气质量在线监测平台JS逆向:请求响应数据加密
空气质量在线监测平台JS逆向:请求响应数据加密
142 0
|
8月前
|
vue 全局响应键盘按键/监听键盘事件(含 js 获取键盘keyCode值的方法)
vue 全局响应键盘按键/监听键盘事件(含 js 获取键盘keyCode值的方法)
677 2
Box2D(现在通常称为Box2D.js或者其WebAssembly版本,Emscripten Box2D)是一个流行的2D物理引擎,用于模拟刚体动力学、碰撞检测与响应以及关节约束等物理现象
【6月更文挑战第16天】Box2D.js,基于C++的2D物理引擎,经Emscripten编译为WebAssembly,用于JavaScript游戏中的真实物理模拟,包含碰撞检测和关节约束。它提供高效的碰撞检测,易于扩展和定制物理属性。使用步骤涉及初始化世界、创建刚体、添加碰撞形状、模拟物理及处理碰撞事件。物理引擎虽提升逼真度,但也增加复杂性和性能需求。其他选项如p2.js、matter.js和ammo.js也可供选择。
252 8
【干货】js判断url是否是合法http/https
【干货】js判断url是否是合法http/https
Node.js 文件系统
Node.js 文件系统
43 1
基于 Node.js 环境,使用内置 http 模块,创建 Web 服务程序
基于 Node.js 环境,使用内置 http 模块,创建 Web 服务程序

热门文章

最新文章