分类目录归档:node

Node.js 接收 GET/POST请求方法分享


摘要:
下文讲述Node.js创建web服务器接收 get post请求的相关知识分享,如下所示:

目前网络中大量应用是采用http、https协议和用户之间互动,下文讲述使用node.js创建web服务器接收客户端get post请求,如下所示:



node.js 创建get接收服务器

在http get的请求中,参数键值被签入到 http url的连接中,当我们获取url后,我们可以通过分析url中的信息获取参数值

例1:
创建简单web服务器获取url信息

      var http = require('http');
      var url = require('url');
      var util = require('util');
 
      http.createServer(function(req, res){
             res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'});
             res.end(util.inspect(url.parse(req.url, true)));
         }).listen(9898);

  

例2:
创建web服务器,分解url信息,下文中采用url模块中的parse函数对url进行分解得出所需的参数信息

   
var http = require('http');
var url = require('url');
var util = require('util');
 
http.createServer(function(req, res){
    res.writeHead(200, {'Content-Type': 'text/plain; charset=utf-8'});


      var params = url.parse(req.url, true).query;


    res.write("webName:" + params.name);
    res.write("\n");
    res.write("url" + params.keySort); //获取?参数中的keySort后的值
    res.end();


    res.end(util.inspect(url.parse(req.url, true)));
}).listen(9898);


在浏览器中输入:
http://localhost:9898/?t=23&name=www.maomao365.com&keySort=valueTest
——输出————
webName:www.maomao365.com
urlvalueTest



node.js 创建post接收服务器

例1:
使用node.js创建一个httppost接收程序,如下所示:

     
     var http = require('http');
     var querystring = require('querystring');
 
     http.createServer(function(req, res){ 
        var post = '';     
 
              //通过req的data事件监听函数,每当接受到请求体的数据,就累加到post变量中
             req.on('data', function(chunk){    
                  post += chunk;
               });
 
           // 在end事件触发后,通过querystring.parse将post解析为真正的POST请求格式,然后向客户端返回。
             req.on('end', function(){    
                post = querystring.parse(post);
               res.end(util.inspect(post));
         });
}).listen(9898);
 

例2:
post应用

         var http = require('http');
var querystring = require('querystring');
 
var postHTML = 
  '<html>maomao365之node.js post应用' +
  '' +
  '
' + '网站名:
' + '网站 URL:
' + '' + '
' + ''; http.createServer(function (req, res) { var body = ""; req.on('data', function (chunk) { body += chunk; }); req.on('end', function () { // 解析参数 body = querystring.parse(body); // 设置响应头部信息及编码 res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}); if(body.name && body.url) { // 输出提交的数据 res.write("网站名:" + body.name); res.write("
"); res.write("网站 URL:" + body.url); } else { // 输出表单 res.write(postHTML); } res.end(); }); }).listen(9898);

Node.js 文件系统 目录操作相关知识简介说明(二)


摘要:
Node.js通过fs模块提供类似于linux的文件操作API,
下文举例讲述node.js操作目录的API
如下所示:



node.js创建目录

node.js创建目录如下:

fs.mkdir(path[, options], callback)
—–参数说明———-
path:目录所处的路径位置

options:可选参数
recursive:是否已递归的方式依次创建目录缺失的路径,缺省值为false
mode:目录权限,缺省值为0777

callback:目录创建成功后的回调函数

例:
Node.js创建目录

          var fs = require("fs");
	  //在当前目录下创建test文件夹
	   console.log("create dir test");
	  fs.mkdir("test",function(err){
	  if (err) {
	    return console.error(err);
	   }
	   console.log("dir create success!");
          });
      


node.js读取目录

node.js读取目录语法如下:

fs.readdir(path, callback)
—-参数说明—–
path:待读取路径说明

callback:目录读取完毕后的回调函数
回调函数会同时传入两个函数:
1.err
错误信息
2.files
指定path下的文件数组列表

例:
node.js读取目录

	     var fs = require("fs");

	      console.log("see test dir");
           
	    fs.readdir("test/",function(err, files){
              if (err) {
                 return console.error(err);
                }
           files.forEach( function (file){
               console.log( file );
             });
           });

	  


node.js 删除目录

node.js 删除目录语法如下:
fs.rmdir(path, callback)
———参数说明——–
path:
待删除目录的路径

callback:
删除目录操作完毕后,回调函数

例:

    var fs = require("fs");

    console.log("del 'test' dir");

    fs.rmdir("test",function(err){
       if (err) {
         return console.error(err);
      }
   
     });
  


删除目录注意事项:
避免目录中存在文件

相关阅读:
node.js文件操作相关API

Node.js 文件系统相关知识简介说明(一)


摘要:
Node.js通过fs模块提供类似于linux的文件操作API,如下所示:



异步与同步

在Node.js开发语言中,如需使用文件系统,需引用fs模块,此模块中有同步和异步读取文件
在异步读取文件的方法中,提供一个回调函数,异步方法不会对程序产生阻塞

例:
同步和异步读取文件的方法分享

   
    //1 新建文件fileReadTmp.txt 输入以下文件
     node.js教程网:www.maomao365.com

    //2新建fileRead.js 输入以下脚本

     var fs = require("fs");

     //异步读取
     fs.readFile('fileReadTmp.txt', function (err, data) {
        if (err) {
          return console.error(err);
       }
         console.log("read1: " + data.toString());
     });

     //同步读取
     
      var data = fs.readFileSync('fileReadTmp.txt');
      
       console.log("read2: " + data.toString());

 


node.js打开文件方法分享

node.js打开文件采用open方法,语法如下:
fs.open(path,[,mode],callback)
—参数说明—-
path:待读取文件路径
mode:文件打开模式,缺省值为可读可写
callback:文件打开后的回调函数

mode参数说明:

mode

说明
r

使用读取模式打开文件。当文件不存在抛出异常。
r+

使用读写模式打开文件。当文件不存在抛出异常。
rs

使用同步的方式读取文件。
rs+

使用同步的方式读取和写入文件。
w

使用写入模式打开文件,当文件不存在则创建。
wx

类似 ‘w’,当文件路径存在,则文件写入失败。
w+

使用读写模式打开文件,当文件不存在则创建。
wx+

类似 ‘w+’, 当文件路径存在,则文件读写失败。
a

使用追加模式打开文件,当文件不存在则创建。
ax

类似 ‘a’, 当文件路径存在,则文件追加失败。
a+

使用读取追加模式打开文件,当文件不存在则创建。
ax+

类似 ‘a+’, 当文件路径存在,则文件读取追加失败。

例:
使用读写模式打开指定文件


   var fs = require("fs");

   //异步打开文件
  
   console.log("open file start");
   
   fs.open('fileReadTmp.txt', 'r+', function(err, fd) {
      if (err) {
         return console.error(err);
      }
      console.log("success!");     
   });



node.js获取文件相关信息的方法分享

stat函数是node.js中获取文件信息的函数,如下所示:
fs.stat(path,callback)
———-参数说明——
path:
文件路径
callback:
回调函数,回调函数包括(err和stats两个对象)

例:


    var fs = require('fs');
 
     fs.stat('fileReadTmp.txt', function (err, stats) {
          console.log(stats.isFile());         
     })


stats类中的方法有:

方法

说明
stats.isFile()

当前路径所指向为文件时返回 true,否则返回 false
stats.isDirectory()

当前路径所指向为目录时返回 true,否则返回 false
stats.isBlockDevice()

当前路径所指向为块设备时返回 true,否则返回 false
stats.isCharacterDevice()

当前路径所指向为字符设备时返回 true,否则返回 false
stats.isSymbolicLink()

当前路径所指向为软链接时返回 true,否则返回 false
stats.isFIFO()

如果为FIFO,返回true,否则返回 false。FIFO是UNIX中的一种特殊类型的命令管道
stats.isSocket()

如果此路径是一个Socket 返回 true,否则返回 false


 var fs = require("fs");

console.log("open file");
fs.stat('fileReadTmp.txt', function (err, stats) {
   if (err) {
       return console.error(err);
   }
   console.log(stats);
   console.log("get file information success");
   
   // 检测文件类型
   console.log("is File ? " + stats.isFile()); 
});



node.js 写入文件

写入文件语法
fs.writeFile(file, data[, options], callback)
—-参数说明————
file:待写入文件名或文件描述符
data:待写入数据,可为字符串和缓冲对象
options:写入属性为为一个json对象,包含{encoding,mode,flag},缺省值为utf-8 flag 为w
callback:写入成功后的回调函数

例:

  var fs = require("fs");

console.log("write file start");
fs.writeFile('fileReadTemp.txt', 'Node.js write',{ 'encoding': 'utf-8' },  function(err) {
   if (err) {
       return console.error(err);
   }
   console.log("write success"); 
   console.log("read file");
   fs.readFile('fileReadTemp.txt', function (err, data) {
      if (err) {
         return console.error(err);
      }
      console.log("file content: " + data.toString());
   });
});


node.js 读取文件

node.js读取文件语法如下:
fs.read(fd, buffer, offset, length, position, callback)
fs.read为异步读取文件的方法
——-参数说明—-
fd:为fs.open返回的文件描述符
buffer:数据写入的缓冲区
offset:数据缓冲区写入的偏移量
length:文件中读取的字节数
position:文件读取的起始位置
callback:文件读取成功的回调函数
例:

    var fs = require("fs");
    var buf = new Buffer.alloc(1024);
 
     console.log("open file");

    fs.open('fileReadTmp.txt', 'r+', function(err, fd) {
       if (err) {
       return console.error(err);
      }
   console.log("open file success");
   console.log("read file:");
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }
      console.log(bytes + "  byte readed.");
    
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }
   });
});



node.js 关闭文件

node.js关闭文件语法说明:
fs.close(fd,callback);
——-参数说明——–
fd:
文件打开后的文件描述符
callback:
文件关闭后的回调函数

例:

   var fs = require("fs");
var buf = new Buffer.alloc(1024);

console.log("open file");
fs.open('fileReadTmp.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
   console.log("open file success");
   console.log("read file:");
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }
      console.log(bytes + "  byte readed.");
    
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }



      //关闭文件
      fs.close(fd,function(err){
           if(err){}
            console.log('close file success!');
       });
     



   });
});



node.js 文件截取

下文讲述文件截取方法,如下所示
node.js文件截取语法:
fs.ftruncate(fd, len, callback)
——–参数说明——-
fd:文件被打开后的文件描述符
len:文件内容截取长度
callback:截取操作完毕后的回调函数
例:

   var fs = require("fs");
var buf = new Buffer.alloc(1024);

console.log("open file");
fs.open('fileReadTmp.txt', 'r+', function(err, fd) {
   if (err) {
       return console.error(err);
   }
    
   fs.ftruncate(fd,10,function(err){});

   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }
      console.log(bytes + "  byte readed.");
    
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }

      fs.close(fd,function(err){
           if(err){}
            console.log('close file success!');
       });
     
   });
});
 


node.js 删除文件

node.js删除文件语法
fs.unlink(path, callback)
—-参数说明—-
path:文件路径
callback:回调函数
例:

    var fs = require("fs");
 
    fs.unlink('fileReadTemp.txt', function(err) {
        if (err) {
            return console.error(err);
        }
       console.log("del success");
    });