• 进入nodejs 利用http模块搭建一个简单的服务器并配合fs模块网客户端传输文件


    node.js简单了解

    node.js是一个软件,它是js的代码运行环境,可以运行js代码然后实现服务器的功能;node.js的开发是模块化开发的思想。

    在下载配置好node.js后,我们直接就可编写js文件代码在终端中运行(注意要进入文件所在的文件夹),在终端输入的格式:

    node 文件名.js

    解析:node就是去环境变量中找到这个node变量指向的软件,然后用node.exe这个软件去运行这个js文件。

    学习http模块

    想要实现服务器的功能,就离不开http模块,它是node自带的模块,这个模块有一个函数可以创建服务器。

    这里有一个新知识,require()方法导入模块,与ES6的导入Import相似。

    话不多说,先写代码:

    1. //导入模块
    2. const http=require("http")
    3. //创建服务器,客户端每访问一次服务器,这个函数就执行一次
    4. var app=http.createServer((req,res)=>{
    5. if(req.url=="index"){ //req.url为浏览器地址栏输入的ip地址后的字段
    6. //配置返回给客户端数据包的数据格式和编码类型
    7. res.setHeader("content-Type","text/html;charset=utf8")
    8. //给客户端最后发送一次数据,发送完就断开连接
    9. res.end("你访问了这个服务器")
    10. }else{
    11. res.end(not404)
    12. }
    13. })
    14. //监听
    15. app.listen(8088)//8088为选择访问这个服务器的端口号

    到此一个简单的服务器就搭建完成了,还未介绍createServer()方法中回调函数的两个参数,相信大家有点不清楚。

    req:客户端向服务器端发送的数据包

    res:服务器端向客户端发送的数据包

    我们打开终端运行一下这个js文件,在浏览器地址栏输入localhost:8088/index ,就可以得到服务器返回的数据。如果ip地址后面的输入的不是index网址,就会返回404。

     

     

     

     现在我们实现了简单的搭建一个服务器,那么我们加大一点难度,引入fs模块读取本地内容。

    这里我们只用fs.readFile()方法,他有两个参数,第一个参数为读取文件的路径;第二个参数为回调函数,回调函数里又有两个参数(err,data)。

    err代表读取失败的结果;data则代表读取成功的结果,没有数据时为undefiend。

    完善代码:

    1. const http=require("http")
    2. const fs=require("fs")
    3. //创建服务器
    4. var app=http.createServer((req,res)=>{
    5. if(req.url=="/index"){
    6. //读取文件同文件下的图片
    7. fs.readFile("./dog1.ong",(err,data)=>{
    8. if(!err){//err为空时执行
    9. res.setHeader("content-Type","image/png")
    10. res.end(data)
    11. }
    12. })
    13. }else{
    14. res.end("not404")
    15. }
    16. })
    17. //监听端口
    18. app.listen(8080)

     运行代码,网址输入index就可以看到我们读取到的图片。

    这里进行了服务器的搭建和文件的读取,取得是一张图片,既然是读取文件那肯定还可以读取其他类型的文件,接下来就该大家试一下了。

    注意:不同的类型,在服务器传数据给客户端时,在setHeader中要设置相应的数据格式,才能够在浏览器正常显示。

  • 相关阅读:
    6155. 找出数组的第 K 大和(力扣周赛)(思维转换 + 堆)
    Jarvis OJ Webshell分析
    K8S -理解StatefulSet - 部署有状态应用
    YOLOV8 进行docker环境配置
    网络安全辅助工具:免费MD5解密网站
    MySQL体系结构
    解决debian Qt Creator fcitx无法输入中文
    SpringBoot-插件化以及springboot扩展接口
    easypoi导入案例
    流(41)
  • 原文地址:https://blog.csdn.net/m0_59345890/article/details/126021394