静态文件服务

首先是一个简易版的读取过程,parse是url中的请求路径,root是根目录路径,join(root, url.pathname)是将两个连接起来。

var http  =require('http')
var parse = require('url').parse
var join = require('path').join
var fs = require('fs')

var root = __dirname
var server = http.createServer(function (req, res) {
    var url = parse(req.url)
    var path = join(root, url.pathname)

})
server.listen(3000)
虽然文件路径获取到了,但是读取文件内容,要用fs.ReadStream
var server = http.createServer(function (req, res) {
    var url = parse(req.url)
    var path = join(root, url.pathname)
    var stream = fs.createReadStream(path)
    stream.pipe(res)
})
server.listen(3000)

但是比较坑爹的是,如果请求出错,例如请求到一个你没有的文件,服务器就会抛错,抛错的方式是服务器挂掉了。。。所以,你必须要监听这个请求

    stream.on('error', function (err) {
        res.statusCode = 500
        res.end('Internal Server Error')
    })

随机浏览