nodejs搭建简易文件服务器 发表于 2018-03-14 | 更新于 2019-04-06 | 分类于 Node.js 日常瞎折腾,随便实现了一个文件服务(只能浏览文件)。如果是文件夹的话,根据目录结构生成ul list;如果是文件的话,直接返回文件内容。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849const http = require('http');const url = require("url");const fs = require("fs");const server = http.createServer((req, res) => { const reqPath = url.parse(req.url).path.split('?')[0]; const filepath = __dirname + '/files' + reqPath; const resHeader = { 'Content-Type': 'text/html;charset=utf8', 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': true, 'Access-Control-Allow-Headers': 'x-requested-with, content-type', } fs.exists(filepath, function (exists) { if (exists) { fs.stat(filepath, function (err, stats) { if (err) { res.writeHead(500, resHeader); res.end('<div styel="color:black;font-size:22px;">server error</div>'); } else { if (stats.isFile()) { const file = fs.createReadStream(filepath); res.writeHead(200, resHeader); file.pipe(res); } else { fs.readdir(filepath, function (err, files) { let str = '<ul>'; for (let i in files) { // 这边url拼接要注意一下 str += `<li><a href="${reqPath.replace(/\/$/, '')}/${files[i]}">${files[i]}</a></li>` } str += '</ul>' res.writeHead(200, resHeader); res.write(str); }); } } }); } else { res.writeHead(404, { 'Content-Type': 'text/html;charset=utf8' }); res.end('<div styel="color:black;font-size:22px;">404 not found</div>'); } });});server.listen(3000);