- formidable模块
formidable模块可以用来处理post请求。甚至可以处理图片、zip文件等的上传。
API地址 formidable模块API地址
- 安装formidable模块(使用淘宝镜像安装)
$ cnpm install --save formidable
//06 用formidable模块演示post请求
var finalhandler = require('finalhandler')
var http = require('http')
var serveStatic = require('serve-static')
var url=require("url");
var fs=require("fs");
var querystring=require("querystring");
// 引用formidable模块
var formidable = require('formidable');
//配置静态资源服务器,将public文件夹静态化出来。
var serve = serveStatic('public', {'index': ['index.html', 'index.htm']})
// Create server
var server = http.createServer(function onRequest (req, res) {
//路由
var pathname=url.parse(req.url).pathname;
if(pathname=="/addStudent"){
//创建一个表单的实例
var form = new formidable.IncomingForm();
//处理表单
form.parse(req, function(err, fields, files) {
//field 表示普通控件
//files 表示文件控件
console.log(fields);
});
return;
}
//使用静态资源
serve(req, res, finalhandler(req, res));
})
// Listen
server.listen(3000);
console.log("服务器正在运行");
<!-- index2.html -->
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="shangchuan" method="post" enctype="multipart/form-data">
<p>
请上传一个头像:
<input type="file" name="filename" />
</p>
<p>
<input type="submit" value="提交">
</p>
</form>
</body>
</html>
//06 用formidable模块演示post请求
var finalhandler = require('finalhandler')
var http = require('http')
var serveStatic = require('serve-static')
var url=require("url");
var fs=require("fs");
var querystring=require("querystring");
// 引用formidable模块
var formidable = require('formidable');
//
var path=require("path");
//配置静态资源服务器,将public文件夹静态化出来。
var serve = serveStatic('public', {'index': ['index.html', 'index.htm']})
// Create server
var server = http.createServer(function onRequest (req, res) {
//设置response响应头部
res.setHeader("Content-Type","text/html;charset=UTF-8");
//路由
var pathname=url.parse(req.url).pathname;
if(pathname=="/shangchuan"){
//创建一个表单的实例
var form = new formidable.IncomingForm();
//设置文件上传的目录 目录需手动创建
form.uploadDir="./uploads";
//处理表单
form.parse(req, function(err, fields, files) {
//field 表示普通控件
//files 表示文件控件
//console.log(files.filename);
if(!files.filename){
return;
}
if(!files.filename.name){
res.end("请上传文件");
return;
}
//获取拓展名
var extname=path.extname(files.filename.name);
//改名 formidable 模块不带扩展名,需自己添加
fs.rename(files.filename.path,files.filename.path+extname,function(){
res.end("上传成功");
})
// res.end("上传成功");
});
return;
}
//使用静态资源
serve(req, res, finalhandler(req, res));
})
// Listen
server.listen(3000);
console.log("服务器正在运行");