读取文件返回给客户端
- 加载http和fs核心模块。声明要读取的目录。注意斜杠要变一下,不然会报错
var http = require('http')
var fs = require('fs')
var myDir = 'C:/Users/lizzy/Desktop/files'
- 创建一个web服务器
var server = http.createServer()
- 监听请求,处理请求。如果url为‘/’,默认打开index.html,如果是其他就默认打开对应的文件。**注意,这里读取到的数据在后台还是二进制数据,但是返回给浏览器后浏览器对html文件进行了解析。实验了多次看到无论是data还是data.toString()返回给浏览器都被解析了。
server.on('request',function(req,res){
// 这里的url是以'/'开头的,如果不写就默认'/'
var url = req.url
if (url === '/'){
fs.readFile(myDir + '/index.html',function(err,data){
if (err) {
return res.end('404 not found')
}
return res.end(data)
})
}
fs.readFile(myDir + url,function(err,data){
if (err) {
return res.end('404 not found')
}
res.end(data)
})
})
读取到的html数据data的后台显示
读取到的html数据data.toString()的后台显示
读取到的html数据data返回给服务器后的显示
- 打开服务器
server.listen(3000,function(){
console.log('server is running')
读取文件目录
fs.readdir(路径,回调函数),同读取文件一样,只不过返回的是files数组
读取文件目录更改html文件再返回给浏览器(理解不透彻,可能有不对的地方)
这里先得有一个template.html的文件,然后通过服务端读取文件目录来刷新html
前面都是一样的,中间用fs.readFiles得到files数组,然后用forEach循环files目录里的文件得到多个tr,替换template.html里的tbody内容
var http = require('http')
var fs = require('fs')
var myDir = 'C:/Users/lizzy/Desktop/files'
var server = http.createServer()
server.on('request',function(req,res){
// 这里的url是以'/'开头的,如果不写就默认'/'
var url = req.url
fs.readFile(./template.html',function(err,data){
if (err) {
return res.end('404 not found')
}
fs.readdir(myDir,function(err,files){
if (err){
return res.end('cannot find the directory')
}
var content = ''
files.forEach(function(item){
content += `
<tr>
<td data-value="apple/"><a class="icon dir" href="C:/Users/lizzy/Desktop/files">${item}/</a></td>
<td class="detailsColumn" data-value="0"></td>
<td class="detailsColumn" data-value="1509589967">2019/2/22</td>
</tr>
`
data = data.toString()
data.replace('tbody的内容',content)
})
res.end(data)
})
})
server.listen(3000,function(){
console.log('server is running')