node的express中间件之bodyParser

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

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

建立一个1.html页面

 

 1 <!DOCTYPE html>
 2 <html>
 3 <head lang="en">
 4     <meta charset="UTF-8">
 5     <title>向服务器上传文件</title>
 6     <script type="text/javascript">        
 7         function uploadFile(){
 8             var formData=new FormData();
 9             var files=document.getElementById("files").files;
10             var file=files[0];
11             formData.append("myfile",file);
12             var xhr=new XMLHttpRequest();
13             xhr.open("post","index.html",true);
14             xhr.onload= function (e) {
15                 if(this.status==200)
16                     document.getElementById("result").innerHTML=this.response;
17             };
18             xhr.send(formData);
19         }
20     </script>
21 </head>
22 <body>
23 请选择文件:<input type="file" id="files" name="file" />
24 <input type="button" value="上传文件" onclick="uploadFile();" />
25 <div id="result"></div>
26 </body>
27 </html>

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

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

 

server.js端代码:

 

 1 var express=require("express");
 2 var fs=require("fs");
 3 var app=express();
 4 app.use(express.bodyParser());
 5 app.get("/index.html", function (req,res) {
 6     res.sendfile(__dirname "/1.html");
 7 });
 8 app.post("/index.html", function (req,res) {
 9     var file=req.files.myfile;
10     fs.readFile(file.path, function (err,data) {
11         if(err) res.send("读文件操作失败");
12         else{
13             fs.writeFile(file.name,data, function (err) {
14                 if(err) res.send("写文件操作失败.");
15                 else res.send("文件上传成功");
16             })
17         }
18     });
19 });
20 
21 
22 app.listen(1337,"127.0.0.1", function () {
23     console.log("开始监听");
24 });

 

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

选择文件:

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

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

点击上传后:

 

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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值