NodeJs之formidable模块的使用

NodeJs之formidable模块的使用今天分享一下nodejs的post请求之formidable模块.话不多说,直接上代码index.html<!DOCTYPEhtml><html><head> <metacharset="utf-8"> <title>NodeJS的post请求</title></head>&

大家好,欢迎来到IT知识分享网。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对应

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/15889.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信