express的中间件bodyParser详解

bodyParser用于解析客户端请求的body中的内容,内部使用JSON编码处理,url编码处理以及对于文件的上传处理.

下面是一个文件上传的例子.

建立一个1.html页面

代码如下:

<!DOCTYPE html>
 <html>
 <head lang="en">
     <meta charset="UTF-8">
     <title>向服务器上传文件</title>
     <script type="text/javascript">       
         function uploadFile(){
             var formData=new FormData();
             var files=document.getElementById("files").files;
             var file=files[0];
             formData.append("myfile",file);
             var xhr=new XMLHttpRequest();
             xhr.open("post","index.html",true);
             xhr.onload= function (e) {
                 if(this.status==200)
                     document.getElementById("result").innerHTML=this.response;
             };
             xhr.send(formData);
         }
     </script>
 </head>
 <body>
 请选择文件:<input type="file" id="files" name="file" />
 <input type="button" value="上传文件" onclick="uploadFile();" />
 <div id="result"></div>
 </body>
 </html>

上面的XMLHttpRequest对象与FormData对象时HTML5中的内容,不作重点讲解.用这两个对象可以将用户选取的文件上传到服务器端,.

在服务器端使用了app.use(express.bodyParser())中间件之后,代表客户端请求的http.IncomingMessage,也就是res对象就具有了一个files属性.

server.js端代码:

代码如下:

var express=require("express");
 var fs=require("fs");
 var app=express();
 app.use(express.bodyParser());
 app.get("/index.html", function (req,res) {
     res.sendfile(__dirname+"/1.html");
 });
 app.post("/index.html", function (req,res) {
     var file=req.files.myfile;
     fs.readFile(file.path, function (err,data) {
         if(err) res.send("读文件操作失败");
         else{
             fs.writeFile(file.name,data, function (err) {
                 if(err) res.send("写文件操作失败.");
                 else res.send("文件上传成功");
             })
         }
     });
 });
 
 
 app.listen(1337,"127.0.0.1", function () {
     console.log("开始监听");
 });

启动服务器后,运行浏览器:

选择文件:

在浏览器端出现了 上传成功字样,

在服务器端也有了我们上传的文件.

点击上传后:

另外bodyParse可以接受客户端ajax提交的json数据,以及url的处理.

(0)

相关推荐

  • express的中间件cookieParser详解

    cookieParser中间件用于获取web浏览器发送的cookie中的内容.在使用了cookieParser中间件后, 代表客户端请求的htto.IncomingMessage对象就具有了一个cookies属性,该属性之为一个对象的数组, 其中存放了所有web浏览器发送的cookie,每一个cookie为cookies属性值数组中的一个对象. index.html代码: 复制代码 代码如下: <!DOCTYPE html>  <html>  <head lang="

  • 深入理解nodejs中Express的中间件

    Express是一个基于Node.js平台的web应用开发框架,在Node.js基础之上扩展了web应用开发所需要的基础功能,从而使得我们开发Web应用更加方便.更加快捷. 举一个例子: 用node.js实现一个控制台打印"hello server" var http = require('http'); var server = http.createServer(function(req,res){ console.log("hello server"); })

  • express的中间件basicAuth详解

    basicAuth中间件为网站添加身份认证功能.在使用了该中间件后, 用户访问网站时必须输入用户名与密码,在用户输入了用户名与密码并通过验证之后才能访问网站. 当用户输入的用户名和密码符合条件,中间件会返回true,允许用户访问网站.否则会返回false.不允许访问网站. 复制代码 代码如下: var express=require("express");  var app=express();  app.use(express.basicAuth("gys",&q

  • express文件上传中间件Multer详解

    前言 Express默认并不处理HTTP请求体中的数据,对于普通请求体(JSON.二进制.字符串)数据,可以使用body-parser中间件.而文件上传(multipart/form-data请求),可以基于请求流处理,也可以使用formidable模块或Multer中间件. 1. multer中间件 Multer是Express官方推出的,用于Node.jsmultipart/form-data请求数据处理的中间件. 它基于busboy构建,可以高效的处理文件上传,但并不处理multipart

  • node.js中express中间件body-parser的介绍与用法详解

    前言 Node中的核心模块分两类:一类是自带的核心模块,如http.tcp等,第二类是第三方核心模块,express就是与http对应的第三方核心模块,用于处理http请求.express在3.0版本中自带有很多中间件,但是在express 4.0以后,就将除static(静态文件处理)以外的其他中间件分离出来了:在4.0以后需要使用中间件时,就需要单独安装好相应的中间件以后调用,以下3.0与4.0中间件的中间件区别(3.0是内置中间件属性名,4.0是需要安装的中间件名称): Express 3

  • node.js 中间件express-session使用详解

    本文介绍的关于node.js中间件express-session的相关内容,分享出来供大家从参考学习,下面来一起看看详细的介绍: 一.为什么使用session? session运行在服务器端,当客户端第一次访问服务器时,可以将客户的登录信息保存. 当客户访问其他页面时,可以判断客户的登录状态,做出提示,相当于登录拦截. session可以和Redis或者数据库等结合做持久化操作,当服务器挂掉时也不会导致某些客户信息(购物车)丢失. 二.session的工作流程: 当浏览器访问服务器并发送第一次请

  • Nodejs中Express 常用中间件 body-parser 实现解析

    写在前面 body-parser是非常常用的一个express中间件,作用是对post请求的请求体进行解析.使用非常简单,以下两行代码已经覆盖了大部分的使用场景. app.use(bodyParser.json()); app.use(bodyParser.urlencoded({ extended: false })); 本文从简单的例子出发,探究body-parser的内部实现.至于body-parser如何使用,感兴趣的同学可以参考官方文档. 入门基础 在正式讲解前,我们先来看一个POST

  • 详解express与koa中间件模式对比

    起因 最近在学习koa的使用, 由于koa是相当基础的web框架,所以一个完整的web应用所需要的东西大都以中间件的形式引入,比如koa-router, koa-view等.在koa的文档里有提到:koa的中间件模式与express的是不一样的,koa是洋葱型,express是直线型,至于为什么这样,网上很多文章并没有具体分析.或者简单的说是async/await的特性之类.先不说这种说法的对错,对于我来说这种说法还是太模糊了.所以我决定通过源码来分析二者中间件实现的原理以及用法的异同. 为了简

  • nodejs开发——express路由与中间件

    路由 通常HTTP URL的格式是这样的: http://host[:port][path] http表示协议. host表示主机. port为端口,可选字段,不提供时默认为80. path指定请求资源的URI(Uniform Resource Identifier,统一资源定位符),如果URL中没有给出path,一般会默认成"/"(通常由浏览器或其它HTTP客户端完成补充上). 所谓路由,就是如何处理HTTP请求中的路径部分.比如"http://xxx.com/users/

  • 浅谈express 中间件机制及实现原理

    简介 中间件机制可以让我们在一个给定的流程中添加一个处理步骤,从而对这个流程的输入或者输出产生影响,或者产生一些中作用.状态,或者拦截这个流程.中间件机制和tomcat的过滤器类似,这两者都属于责任链模式的具体实现. express 中间件使用案例 let express = require('express') let app = express() //解析request 的body app.use(bodyParser.json()) //解析 cookie app.use(cookieP

随机推荐