欢迎光临散文网 会员登陆 & 注册

nodejs-http模块补充返回图片或网页文件

2022-04-12 18:15 作者:鲈鱼懂个der的Java  | 我要投稿

你好。不知道我写的文章对你们有用没有,发现我写的有问题请私信给我,我会改错的。

其实这个很简单,和上一次的对比起来,就是返回response.end的内容区别,这个不仅可以返回字符串,也可以返回文件,二者区别增加了第一个是fs模块,第二个是返回图片内容或者页面,应该等会晚上再次补充一篇文章,内容看等会舍友带饭回来的心情决定,哈哈。最后有一个response.end的解释

废话不多说,开始进行区别介绍

1 fs模块

fs模块对应的是文件系统,比如文件夹的建立,文件,获取该对应的目录下文件文字,判断文件还是文件夹等。

首先让我们来梳理一下使用的函数readFile这个函数和readdirSync函数的区别。一个使用的是同步函数,一个使用的是异步函数,那什么是同步函数,什么是异步函数呢?他们的执行过程是怎么样的呢?处理方式是什么呢?抱有一丝希望会有一个粉丝来私信催我写一个,哈哈。

我们使用的是readFile这个函数。首先分解一下这个函数的参数什么?

        参数一 文件路径

        我使用的是相对路径。测试文件是test.html。

        参数二 配置参数

          这个是一个对象的形式存储,可以考虑不填。个人觉得养成良好习惯就加了,主要为了字符编码不影响以后爆bug。

        参数三,回调函数

        这是一个回调函数,以后补充,这个回调函数的形参有两个第一个是error,官网文档注释的,第二个是返回对应的数据data,这个形参命名由个人决定,主要data的类型是buffer类型,以后补充。

2   返回数据类型

要让浏览器可以识别你返回的数据是什么?是文字。还是图片,别来给我杠什么字节流之类的,在此不探讨。

开始进行实验

测试html文件
测试图片。仔细看可以看到icon也变成了那个对应的图片

测试图片代码

// 导入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中的最后一次握手一样,不过不是客户端的处理,而是服务端发送最后的报文。如果有误请联系我。谢谢。

nodejs-http模块补充返回图片或网页文件的评论 (共 条)

分享到微博请遵守国家法律