nodejs-http模块补充返回图片或网页文件
你好。不知道我写的文章对你们有用没有,发现我写的有问题请私信给我,我会改错的。
其实这个很简单,和上一次的对比起来,就是返回response.end的内容区别,这个不仅可以返回字符串,也可以返回文件,二者区别增加了第一个是fs模块,第二个是返回图片内容或者页面,应该等会晚上再次补充一篇文章,内容看等会舍友带饭回来的心情决定,哈哈。最后有一个response.end的解释
废话不多说,开始进行区别介绍
1 fs模块
fs模块对应的是文件系统,比如文件夹的建立,文件,获取该对应的目录下文件文字,判断文件还是文件夹等。
首先让我们来梳理一下使用的函数readFile这个函数和readdirSync函数的区别。一个使用的是同步函数,一个使用的是异步函数,那什么是同步函数,什么是异步函数呢?他们的执行过程是怎么样的呢?处理方式是什么呢?抱有一丝希望会有一个粉丝来私信催我写一个,哈哈。
我们使用的是readFile这个函数。首先分解一下这个函数的参数什么?
参数一 文件路径
我使用的是相对路径。测试文件是test.html。
参数二 配置参数
这个是一个对象的形式存储,可以考虑不填。个人觉得养成良好习惯就加了,主要为了字符编码不影响以后爆bug。
参数三,回调函数
这是一个回调函数,以后补充,这个回调函数的形参有两个第一个是error,官网文档注释的,第二个是返回对应的数据data,这个形参命名由个人决定,主要data的类型是buffer类型,以后补充。
2 返回数据类型
要让浏览器可以识别你返回的数据是什么?是文字。还是图片,别来给我杠什么字节流之类的,在此不探讨。
开始进行实验


测试图片代码
// 导入http模块
const fs=require('fs')
const http=require('http')
const server=http.createServer((request,response)=>{
if(request.url=='/favicon.ico')
console.log('只落地一次的鸟没有图标');
console.log('发起请求的电脑路径:',request.url);
// 编写对应的响应的状态码。并设置返回的文本时html文本,浏览器会自己进行辨识出入元素
fs.readFile('./images/1.jpg',(err,data)=>{
response.writeHead(200,{ 'Content-type': 'image/jpg'})
response.end(data)
})
console.log('有人访问了服务器');
})
server.listen(8000,()=>{
console.log('http://127.0.0.1:8000');
})
和测试页面的不同在于Content-type不同,encoding没有,主要返回图片的不需要添加utf-8,
utf-8是处理字符集的编码方式
response.end()是最后response最后进行一次发送数据,类似于tcp中的最后一次握手一样,不过不是客户端的处理,而是服务端发送最后的报文。如果有误请联系我。谢谢。