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 });
启动服务器后,运行浏览器:
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
新闻热点
疑难解答