Formidable 模塊
這是一個對文件上傳非常好得模塊,被名爲"Formidable" , formidable模塊可以通過NPM進行下載
npm install formidable
當你下載完Formidable模塊,你可以在任何應用中包括模塊
var formidable = require('formidable');
文件上傳
現在你已經可以在Node.js上製作web頁面,讓用戶上傳文件到你的計算機
第一步:創建一個上傳表單
創建一個Node.js文件然後寫上HTML文件上傳的Input框
var http = require('http');
http.createServer(function(req,res){
res.writeHead(200,{'Contebt-Type':'text/html'});
res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
res.write('<input type="file" name="filetoupload"><br>');
res.write('<input type="submit">');
res.write('</form>');
return res.end();
}).listen(8080);
第二步:解析上傳完成的文件
包含Formidable模塊後就可以在文件上傳後進行解析,當文件是上傳完成和解析後完成後,你的計算機將會得到一個被創建的臨時文件夾
var http = require('http');
var formidable = require('formidable');
http.createServer(function (req, res) {
if (req.url == '/fileupload') {
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
res.write('File uploaded');
res.end();
});
} else {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
res.write('<input type="file" name="filetoupload"><br>');
res.write('<input type="submit">');
res.write('</form>');
return res.end();
}
}).listen(8080);
第三步:保存文件
var http = require('http');
var formidable = require('formidable');
var fs = require('fs');
http.createServer(function (req, res) {
if (req.url == '/fileupload') {
var form = new formidable.IncomingForm();
form.parse(req, function (err, fields, files) {
var oldpath = files.filetoupload.path;
var newpath = 'C:/Users/Your Name/' + files.filetoupload.name;
fs.rename(oldpath, newpath, function (err) {
if (err) throw err;
res.write('File uploaded and moved!');
res.end();
});
});
} else {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write('<form action="fileupload" method="post" enctype="multipart/form-data">');
res.write('<input type="file" name="filetoupload"><br>');
res.write('<input type="submit">');
res.write('</form>');
return res.end();
}
}).listen(8080);
啓動服務
後面就沒演示了,因爲windows系統下會發生文件跨盤傳輸的權限警告,得將node.js程序上傳到服務器,然後windows上傳到雲端的情況就不會報文件跨盤傳輸警告