文件服务器 简书,基本文件服务器

从官方首页一个hello world出发, 先构建一个httpServer

var http = require('http');

http.createServer(function (req, res) {

res.writeHead(200, {'Content-Type': 'text/plain'});

res.end('Hello World\n');

}).listen(1337, '127.0.0.1');

console.log('Server running at http://127.0.0.1:1337/');

使用http.createServer开启一个本地对1337端口的监听,接受到请求后,返回一个文本类型的相应,内容为 "Hello World\n"。 这里有几个WEB基础知识点:

1. 200: HTTP 状态消息 服务端返回的状态消息用来告诉浏览器这个请求是否成功。

1. {'Content-Type': 'text/plain'}: MIME-type 服务端返回的相应内容类型,浏览器根据该类型解析响应的内容(网页、图片、音频、视频、xml等)。

完成一个文件服务器,除了基本的服务器监听以外,最重要的是文件系统的数据读取,这里需要查看来自fs模块的 API:

如果文件不存在: 直接使用response.end() 输出一个404的响应结果。

当然你也可以使用fs的其他方法完成这里的功能,如:直接获取文件结果内容的readFile 或者 readFile 等。

另外: 可以根据请求路径的后缀,识别请求结果数据的MIME-type,这里就需要用到mime模块了,这个可以直接使用$npm install mime 安装,详细的api可以参见Github: https://github.com/broofa/node-mime

PS,完整代码如下:

"use strict";

var mime = require("mime"), //MIME类型

http = require("http"),

fs = require("fs");

http.createServer(function(req,resp){

var root = "",

pathname = decodeURI(req.url).substring(1);

fs.stat(root + pathname, function(error, stats){

if(!error && stats && stats.isFile && stats.isFile() ){

resp.writeHead(200, {

"Content-Type": mime.lookup(pathname) || 'text/html'

});

fs.createReadStream(pathname).pipe(resp);

}else{

resp.writeHead(404, {

"Content-Type": 'text/html'

});

resp.end("404");

}

});

}).listen(8888);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值