文件夹列表

准备

使用 $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。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天运行微博这个项目,发现 [NSBundlemainBundle]pathForResource:@"emot...
    哈么么茶阅读 5,739评论 0 0
  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 7,190评论 1 37
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,314评论 19 139
  • 别人说你长得不如另一个人阳光 但是为什么我觉得超级好看 越看越好看 神奇的力量
    做一杯冷静得水阅读 2,635评论 0 0
  • 上次新闻说92年生的已跨入中年,我便理所当然到了中年危机的年纪了,最明显的特征就是多愁伤感。。。 特别是最近,身边...
    舞春光阅读 3,089评论 0 1