post请求表单数据-node

网上听了点node的课程,运用一下

1.安装node,省略…点击查看API文档

2.安装formidable模块,点击查看API文档

post请求表单数据-node

3.html代码:(注意要写enctype=”multipart/form-data”,因为要上传照片,小编之前就是纳闷好久,为什么接收的文件都为空)

 1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title></title>
6 <style type="text/css">
7 form{
8 width: 400px;
9 margin: 50px auto;
10 }
11 </style>
12 </head>
13 <body>
14 <form action="http://127.0.0.1:80/postmsg" method="post" enctype="multipart/form-data" autocomplete="off">
15 姓名:<input type="text" name="name"><br><br>
16 年龄:<input type="text" name="age"><br><br>
17 性别:<input type="radio" name="sex" value="男">
18 <input type="radio" name="sex" value="女"><br><br>
19 照片:<input type="file" name="photo"><br><br>
20 <input type="submit" name="" value="提交">
21 </form>
22 </body>
23 </html>

4.js代码:

 1 //创建http服务器所需模块
2 let http=require("http");
3 let url=require("url");
4 //处理表单数据所需模块:node-formidable专门处理表单
5 //安装:cnpm i -S formidable
6 let formidable = require('formidable');
7 let util = require('util');
8 //修改文件名
9 let fs=require('fs');
10 http.createServer(function(req, res) {
11 if (req.url == '/postmsg' && req.method.toLowerCase() == 'post') {
12 //实例化对象
13 let form = new formidable.IncomingForm();
14 //设置上传的文件路径(如:创建一个名为”upload”的文件,将要上传的照片存在这里)
15 form.uploadDir ='./upload';
16 //获取表单内容
17 form.parse(req, (err, fields, files)=>{
18 let oldName=dirname+'/'+files.photo.path;
19 let newName=dirname+'/upload/'+files.photo.name;
20 fs.rename(oldName,newName,(err)=>{ //fs.rename:改名(改为该文件原来的名字)
21 if (err) {
22 throw err
23 }else{
24 res.writeHead(200, {'content-type': 'text/plain;charset=UTF-8'});
25 res.write('写入成功');
26 }
27 res.end(util.inspect({fields: fields, files: files})); //util.inspect:将obj转成字符串
28 })
29 });
30 }
31 }).listen(80,'127.0.0.1') //设置80端口的http

5.打开js文件,ctrl+B 即:运行文件,http连接走起 (注:小编用的sublime)

6.打开html网页,填写数据,上传文件,点击提交(form请求的是 http://127.0.0.1:80/postmsg)

post请求表单数据-node

7.跳转到 http://127.0.0.1/postmsg页面,如下图

post请求表单数据-node

8.接下来,在upload文件中就存入了上传的图片

post请求表单数据-node

注意事项:小编用的sublime,总是会出现修改了js文件后刷新页面会报错的情况

post请求表单数据-node

原因:端口号被占用了,解决方法:将这个端口号先灭掉,打开cmd,输入:tskill node ,再运行起:ctrl+B

post请求表单数据-node

返回
顶部