express的中间件bodyParser详解


Posted in Javascript onDecember 04, 2014

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("开始监听");

 });

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

express的中间件bodyParser详解

选择文件:

express的中间件bodyParser详解

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

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

express的中间件bodyParser详解

点击上传后:

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

Javascript 相关文章推荐
经典的带阴影的可拖动的浮动层
Jun 26 Javascript
javascript中负数算术右移、逻辑右移的奥秘探索
Oct 17 Javascript
原生javascript实现分享到朋友圈功能 支持ios和android
May 11 Javascript
jQuery实现获取元素索引值index的方法
Sep 18 Javascript
js HTML5上传示例代码完整版
Oct 10 Javascript
使用Javascript判断浏览器终端设备(PC、IOS(iphone)、Android)
Jan 04 Javascript
BootStrap的双日历时间控件使用
Jul 25 Javascript
微信小程序实现鼠标拖动效果示例
Dec 01 Javascript
ES6与CommonJS中的模块处理的区别
Jun 13 Javascript
vue-router 手势滑动触发返回功能
Sep 30 Javascript
JQueryDOM之样式操作
Mar 27 jQuery
uniapp实现可以左右滑动导航栏
Oct 21 Javascript
express的中间件basicAuth详解
Dec 04 #Javascript
详解JS函数重载
Dec 04 #Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
Dec 04 #Javascript
javascript常用代码段搜集
Dec 04 #Javascript
5种处理js跨域问题方法汇总
Dec 04 #Javascript
用js读、写、删除Cookie代码续篇
Dec 03 #Javascript
js字符串完全替换函数分享
Dec 03 #Javascript
You might like
PHP新手上路(四)
2006/10/09 PHP
php实现改变图片直接打开为下载的方法
2015/04/14 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
2017/11/17 PHP
解决php写入数据库乱码的问题
2019/09/17 PHP
PHP利用curl发送HTTP请求的实例代码
2020/07/09 PHP
javascript window.opener的用法分析
2010/04/07 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
JS实现鼠标经过好友列表中的好友头像时显示资料卡的效果
2014/07/02 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
创建一个类Person的简单实例
2016/05/17 Javascript
jquery div模态窗口的简单实例
2016/05/28 Javascript
JavaScript禁止用户多次提交的两种方法
2016/07/24 Javascript
JS只能输入正整数的简单实例
2016/10/07 Javascript
node的process以及child_process模块学习笔记
2018/03/06 Javascript
Chart.js 轻量级HTML5图表绘制工具库(知识整理)
2018/05/22 Javascript
JavaScript常见JSON操作实例分析
2018/08/08 Javascript
利用vue-i18n实现多语言切换效果的方法
2019/06/19 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
基于elementUI竖向表格、和并列的案例
2020/10/26 Javascript
Vue-router中hash模式与history模式的区别详解
2020/12/15 Vue.js
用Python计算三角函数之acos()方法的使用
2015/05/15 Python
将Django框架和遗留的Web应用集成的方法
2015/07/24 Python
python redis 删除key脚本的实例
2019/02/19 Python
python matplotlib饼状图参数及用法解析
2019/11/04 Python
详解python方法之绑定方法与非绑定方法
2020/08/17 Python
用python批量下载apk
2020/12/29 Python
Python实现网络聊天室的示例代码(支持多人聊天与私聊)
2021/01/27 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
德国价格合理的品牌商品购物网站:averdo
2019/03/21 全球购物
戴森比利时官方网站:Dyson BE
2020/10/03 全球购物
银行类自荐信
2014/02/04 职场文书
2015自愿离婚协议书范本
2015/01/28 职场文书
建国大业电影观后感
2015/06/01 职场文书
食堂卫生管理制度
2015/08/04 职场文书
Python制作春联的示例代码
2022/01/22 Python