搜索

有思俱乐部学习园地

Node.js 实现目录浏览功能

目录浏览


// 目录浏览
// dir 需要提供目录浏览功能的目录
// dirname 本地路径 即__dirname 
// bool 子目录是否提供浏览功能
app.dir = function (_dir, dirname, bool) {
    // 使用上一章已经完成的路由功能
    app.get(_dir, (req, res) => {
        let html = "< head>< meta charset='utf-8'>< /head>";
        try {
            // 用户访问目录
            let files = fs.readdirSync(dirname + _dir);
            let fileName = null;
            for (let i in files) {
                if (path.extname(files[i]) === "" && bool === true) {
                    app.dir(_dir + '/' + files[i], dirname, bool)
                }
                fileName = files[i];
                html += "< div>< a href='" +_dir + '/' + fileName + "'>" + fileName + "< /a>< /div>";
            }
        } catch (e) {
            html += '您访问的目录不存在';
        }
        res.writeHead(200, {'content-type': 'text/html'});
        res.end(html);
    })
}

访问静态文件

            
// 处理静态文件函数
// res response对象
// pathName 静态文件相对路径
// ext 静态文件后缀
function handleStatic(res, pathName, ext) {
    fs.exists(pathName, (exists) => {
        if (!exists) {
            res.writeHead(404, {'Content-Type': 'text/plain'});
            res.write('The request url ' + pathName + ' was not found on this server');
            res.end();
        } else {
            fs.readFile(pathName, (err, file) => {
                if (err) {
                    res.writeHead(500, {'Cotent-Type': 'text/plain'});
                    res.end(err);
                } else {
                        const ContentType = mime[ext] || 'text/plain';
                        res.writeHead(200, {'Cotent-Type': ContentType});
                        res.write(file);
                        res.end();
                    }
                }
            })
        }
    })
}
            

工作人员

 
        
作者:郑子民
信息录入:郑子民