gpt4 book ai didi

javascript - Node 的 Http 服务器列出目录中的所有文件

转载 作者:行者123 更新时间:2023-12-03 00:02:38 25 4
gpt4 key购买 nike

我对 Node 还很陌生,所以如果这是一个简单的问题,我深表歉意。但我正在尝试读取目录 ./resources 的内容,然后在网页上显示它们的链接。问题是目录中的文件是动态的,所以我使用 fs.readdir在 Node 中。

但是<h1>未显示在 index.html 上页;有什么想法吗?

const resDir = "resources/";
const resDirFiles = [];

const app = http.createServer((req, res) => {

...

fs.readFile(filePath, (err, content) => {
if (err) {
// To be implemented
} else {
res.writeHead(200, {
"Content-type": contentType
});
res.end(content, "utf8", callback(req, res));
}
});
});

function callback(req, res) {
if (req.url == "/" || req.url == "/index") {
fs.readdir(resDir, (err, files) => {
files.forEach(file => {
resDirFiles.push(file);
res.end("<h1>Ok</h1>"); // placeholder
});
});
}
}

最佳答案

此解决方案使用模块 http 并列出目录 resDir 中的所有文件。它还提供了文件的链接,但出于安全考虑,它不适用于所有浏览器/服务器,以避免在用户和服务器之间提供免费网关。为了更强大的你should have a file server .

var path = require('path')
var http = require('http')
var find = require('find')

var resDir = __dirname

http.createServer(function (req, res) {
res.setHeader('content-type', 'text/html')
find.file(resDir, function (files) {
res.write('<ul>')
for (let i = 0; i < files.length; i++) {
let fileRelative = path.relative(resDir, files[i])
res.write('<li><a href="' + fileRelative + '">' + fileRelative + '</a></li>')
}
res.write('</ul>')
res.end()
})
}).listen(3000, function () {
console.log('server start at port 3000')
})

现在您可以在http://localhost:3000上访问它

关于javascript - Node 的 Http 服务器列出目录中的所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55108257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com