nodeJs图片上传例子.pdf
文本预览下载声明
目 录
目标
功能模块分解
一个基础的http服务器
服务器简单分析
服务器如何处理请求
对请求进行路由选择
路由到处理程序
一种不好的实现方式
阻塞与非阻塞
非阻塞方式对请求进行响应
更有用的场景
处理文件上传
该实例有关的技术点 :
本文档使用 看云 构建 - 2 -
目标
目标
1. 在浏览器地址栏输入 “http//demos/start” ,进入欢迎页面 ,页面有一个文件上传表单 ;
2. 选择一张图片并提交表单 ,文件被上传到http//demos/uploads上传完成把该图片显示在页面上。
本文档使用 看云 构建 - 3 -
功能模块分解
功能模块分解
1. 需要提供欢迎页 ,所以需要一个http服务器 ;
2. 对于不同请求 ,根据url ,服务器能给与不同响应 ,需要路由 ,把请求对应到相应的请求处理程序 (request
handler )
3. 需要请求处理程序 ;
4. 路由处理post数据 ,并把数据封装成更加友好的格式传递给处理程序 ,需要数据处理功能 ;
5. 需要视图逻辑供请求处理程序使用 ,以便将结果返回给浏览器 ;
6. 需要上传处理功能处理上传细节。
如果是php实现 ,我们需要apache http服务器并配置mod_php5模块 ,那么整个 “接收请求并回复 “并不需要
php来做。而使用nodejs ,不仅仅是实现应用 ,同时还实现了http服务器。
本文档使用 看云 构建 - 4 -
一个基础的http服务器
一个基础的http服务器
nodejs支持模块化 ,有利于编写干净的代码。除了内置的模块 ,我们可以将自己的不同功能的代码放进不同模块
中 ,说白了就是写在不同文件中。
创建js文件取名server.js ,写入代码如下 :
var http require(http);
http.createServer(function(req,res){
res.writeHead(200,{Content-Type:text/html});
res.write(
Node.js
);
res.end();
}).listen(3000,);
执行
node server.js
浏览器输入http//localhost 3000 ,显示”Node.js “。
本文档使用 看云 构建 - 5 -
服务器简单分析
服务器简单分析
第一行 ,require请求nodejs内置的http模块 ,赋给http变量 ;接着调用http模块的createServer方法 ,返回一个
对象 ,这个对象有一个叫做listen的方法 ,这个方法的参数指定http服务器监听的端口号。createServer方法的匿
名函数是该方法仅仅需要的一个参数 ,js中函数和变量一样可以传递。
使用这种方式是因为nodejs是事件驱动的。
当我们使用php时 ,任何时候每当有请求进入 ,apache就为这一新请求新建一个进程 ,并从头到尾的执行php脚
本。htpp.createServer不仅仅是建一个侦听某端口的服务器 ,我们还想要他在收到http请求时做点什么。而
nodejs是异步的 :请求任何时候都可能到达 ,但是他却跑在一个单进程中。
当一个请求到达3000端口时怎么控制流程呢 ?这时候nodejs/javascript的事件驱动机制派上用场了。
我们向创建服务器的方法传递了一个函数 ,任何时候服务器收到请求 ,这个函数就会被调用 ,被用作处理请求的
的地方。
本文档使用 看云 构建 - 6 -
服务器如何处理请
显示全部