利用fs.readdir()函数访问服务器指定目录里的内容

使用node命令运行app.js文件,使用curl或网页输入URL访问服务器指定目录所包含的内容,如访问根目录下的opt文件夹,测试结果如下:

curl:

网页:

服务器:

利用fs.readdir()函数访问服务器指定目录里的内容_第1张图片

app.js源码如下:

var http=require('http'),
    fs=require('fs');
var files;
function ll(callback){
    fs.readdir(dir,function(err,files){
        if(err){
            callback(err);
            return;
        }
        callback(null,files);
        console.log(files);
    });
}
function handle_incoming_request(req,res){
    console.log("INCOMING REQUEST: "+req.method+"  "+req.url);
    console.log(req.url.split('/'));                       
    dir=req.url;
    ll(function(err,files){
        if(err){
            res.writeHead(503,{"Content-Type":"application/json"});
            res.end(JSON.stringify(err));
            return;
        }
        var out={error:null,files:files};
        res.writeHead(200,{"Content-Type":"application/json"});
        res.end(JSON.stringify(out));
    });
}
http.createServer(handle_incoming_request).listen(8080);

解释:

console.log(req.url.split('/'));在本程序中并无太大意义,但有必要指出的是,如果访问的地址是http://localhost:8080,那么req.url就等于根目录符号'/',如果要对req.url进行解析分组,使用String.split()函数时,需要注意,若req.url=='/',则req.url.split('/')==[""],返回的数组有一个元素,而且该元素为空,如果req.url=='/opt/Sublime',则req.url.split('/')==["","opt","Sublime"],利用'/'符号划分返回的第一个数组的元素始终都是空

另外需要注意的一点是fs.readdir()函数的第一个指示路径的字符串参数中连续的‘/’符号表示一个‘/’符号,如"//////"表示根路径符号"/",而"////home//////////jason"则等价与"/home/jason"

fs.readdir()函数可以实现类似Linux中显示当前文件夹下内容的ll命令,只是ll显示的信息更全面,而fs.readdir()函数只返回文件名称数组。


你可能感兴趣的:(Node.js)