express的中間件bodyParser詳解
bodyParser用于解析客戶端請求的body中的內(nèi)容,內(nèi)部使用JSON編碼處理,url編碼處理以及對于文件的上傳處理.
下面是一個文件上傳的例子.
建立一個1.html頁面
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>向服務(wù)器上傳文件</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中的內(nèi)容,不作重點講解.用這兩個對象可以將用戶選取的文件上傳到服務(wù)器端,.
在服務(wù)器端使用了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("開始監(jiān)聽");
});
啟動服務(wù)器后,運行瀏覽器:
選擇文件:
在瀏覽器端出現(xiàn)了 上傳成功字樣,
在服務(wù)器端也有了我們上傳的文件.
點擊上傳后:
另外bodyParse可以接受客戶端ajax提交的json數(shù)據(jù),以及url的處理.
相關(guān)文章
Node.JS在命令行中檢查Chrome瀏覽器是否安裝并打開指定網(wǎng)址
這篇文章主要介紹了Node.JS在命令行中檢查Chrome瀏覽器是否安裝,并打開指定網(wǎng)址,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下2019-05-05基于socket.io和node.js搭建即時通信系統(tǒng)
socket.IO是一個websocket庫,包括了客戶端的js和服務(wù)器端的nodejs。官方地址:http://socket.io2014-07-07nodejs部署到騰訊云服務(wù)器的實現(xiàn)(寶塔面板linux系統(tǒng))
本文主要介紹了nodejs部署到騰訊云服務(wù)器的實現(xiàn)(寶塔面板linux系統(tǒng)),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-06-06Node.js中常用設(shè)計模式的使用方法總結(jié)
設(shè)計模式是由經(jīng)驗豐富的程序員在日積月累中抽象出的用以解決通用問題的可復用解決方案,它提供了標準化的代碼設(shè)計方案提升開發(fā)體驗,本文主要來和大家討論一下Node.js中設(shè)計模式的重要性并提供一些代碼示例,感興趣的可以了解下2023-10-10如何設(shè)置process.env.NODE_ENV生產(chǎn)環(huán)境模式
process.env.NODE_ENV默認只有兩種狀態(tài)即development和production,本文主要介紹了process.env.NODE_ENV設(shè)置生產(chǎn)環(huán)境模式,感興趣的可以了解一下2021-09-09sublime text配置node.js調(diào)試(圖文教程)
下面小編就為大家分享一篇sublime text配置node.js調(diào)試(圖文教程),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2017-11-11node.js基于socket.io快速實現(xiàn)一個實時通訊應用
這篇文章主要介紹了node.js基于socket.io快速實現(xiàn)一個實時通訊應用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04