NodeJs之formidable模块的使用

今天分享一下nodejs的post请求之formidable模块.话不多说,直接上代码

index.html

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>NodeJS的post请求</title>
</head>
<body>
<div id="main" style="width:800px;height:400px">
	<form action="shangchuan" method="post" enctype="multipart/form-data">
		<p>
			请输入一张图片:
			<input type="file" name="wenjian">
		</p>
		<p>
			<input type="submit" value="提交">
		</p>
	</form>
</div>
</body>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
</html>

inex.js

/*
* 这个案例演示POST请求的formidable模块
* */
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");
var formidable=require("formidable");
var path=require("path");

//配置静态资源服务器,将public文件夹静态化出来
var serve=serveStatic("public",{"index":["index.html","index.htm"]})

var server=http.createServer(function onRequest(req,res){
	//路由
	var pathname=url.parse(req.url).pathname;
	console.log(pathname);
	// res.setHeader('Content-Type', 'application/json;charset=utf-8');
	if(pathname == "/shangchuan"){
		// 创建一个表单的实例,这是formidable的API
		// 请看https://npm.taobao.org/package/formidable
		var form = new formidable.IncomingForm();
		
		//设置上传的文件存放在哪里
		form.uploadDir = "./math-tool";
		//处理表单
		form.parse(req, function(err, fields, files) {
			//fields  表示普通控件      files表示文件控件
			console.log(fields);
			console.log(files);
			//验证是否有wenjian这个控件
			if(!files.wenjian){
				return;
			}
			//验证传输文件是否有名字
			if(!files.wenjian.name){
				res.end("please upload file");
				return;
			}
			//得到拓展名
			var extname=path.extname(files.wenjian.name);
			//改名,因为formidable天生传输的文件是没有拓展名的
			//fs的rename方法用来改名.files.wenjian.path就是它默认的路径+文件名,
			// 改名为默认的路径+文件名+拓展名
			fs.rename(files.wenjian.path,files.wenjian.path+extname,function () {
				res.end("success");
				
			})
		});
		
		return;
	}
	//使用静态资源
	serve(req,res,finalhandler(req,res));
	
})

//listen
server.listen(3000,"127.0.0.1");
console.log("服务器已经运行在3000端口");

注意:index.html里面input[type=file]标签的name属性和index.js里面的files.wenjian对应

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值