文件夹列表

作者: 云香水识 | 来源:发表于2014-12-28 20:16 被阅读42次

    准备

    使用 $npm install http-f2e-server@0.0.6 进行安装之前版本,本篇在此基础上开发一个基于模板引擎的文件夹列表展示

    主流程嵌入

    fs.stat() 中判断当前url映射为路径:

    else if(!error && stats && stats.isDirectory && stats.isDirectory() ){
        require('./lib/directory').execute(pathname, root, req, resp);
    }
    

    directory 模块

    • 先创建一个html模板文件在 lib/tmpl/folder.html, 内容:
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title><%=title%></title>
    </head>
    <body>
        <ul>
            <li><a href="<%=parent%>">../</a></li>
            <%files.forEach(function(file){
                print( '<li><a href="'+base+file+'">'+file+'</a></li>' );
            })%>
        </ul>
    </body>
    </html>
    
    • 加载该文件文本到模块中:
    var template = _.template( fs.readFileSync( __dirname + '/tmpl/folder.html','utf-8') );
    
    • 获取文件夹列表并渲染结果, 如果获取失败输出异常的json格式数据
    fs.readdir(root+pathname, function(error, files){
        if(error){
            resp.writeHead(500, {"Content-Type": mime.lookup( ".json" )});
            resp.end( JSON.stringify( error ) )
        }else{
            resp.end( template({
                files: files,   //文件(夹)列表
                title: pathname,    //标题显示
                parent: pathname.match(/[\\\/]$/) ? "../" : "./",   //根据结尾分隔符处理回到上级目录链接
                base: "/"+pathname.replace(/(\w+)$/,"$1/")  //拼接目录链接和文件(夹)的绝对路径
            }) );
        }
    });
    

    PS:

    相关完整代码已经发布到了npm仓库中, 可以使用 $npm install http-f2e-server@0.0.7 进行安装或者更新。进入目录后使用 $node http-f2e-server.js 启动服务,并查看Demo。

    相关文章

      网友评论

        本文标题:文件夹列表

        本文链接:https://www.haomeiwen.com/subject/xwzatttx.html