使用第三方包node-formidable,需要通過Node.js的包管理NPM來安裝外部包,我們已安裝好的Node.js環境一般都已經默認把NPM安裝到機器上,我們可以在cmd下通過命令行在NPM中安裝formidable包:
npm install formidable
var formidable = require('formidable'),
http = require('http'),
sys = require('sys');
http.createServer(function(req, res) {
if (req.url == '/upload' && req.method.toLowerCase() == 'post') {
// parse a file upload
var form = new formidable.IncomingForm();
//這裏formidable會對upload的對象進行解析和處理
form.parse(req, function(err, fields, files) {
res.writeHead(200, {'content-type': 'text/plain'});
res.write('received upload:\n\n');
res.end(sys.inspect({fields: fields, files: files}));
});
return;
}
// show a file upload form
res.writeHead(200, {'content-type': 'text/html'});
res.end(
'<form action="/upload" enctype="multipart/form-data" '+
'method="post">'+
'<input type="text" name="title"><br>'+
'<input type="file" name="upload" multiple="multiple"><br>'+
'<input type="submit" value="Upload">'+
'</form>'
);
}).listen(8888);
- 通過formidable在start表單中添加一個文件上傳元素(添加一個multipart/form-data的編碼類型,移除此前的文本區,添加一個文件上傳組件)
- 在form.parse中處理上傳的文件保存到本地,再輸出到html上面。
當然一個上傳功能包的使用並不是官方Demo說的那麼簡單,我們可以在WebStorm中看到node-formidable包的組成結構以及其內部函數,IncomingForm結構圖如下: