基于nodejs与花生壳内网穿透工具的调查问卷

一、制作调查问卷

先去网上找一张调查问卷的html页面(直接复制网页源代码,包括link链接里的css文件),所有文件放在一个文件夹下面,就叫‘调查问卷’吧,然后修改问卷中问题,变成你的调查问卷,关于表单提交的地址后面再讲。就像下面这张表单:

二、nodejs服务器托管资源

使用express包创建服务,托管静态资源(路径为我们的调查问卷整个文件夹),这里我监听的是3000端口。关于nodejs运行环境,express装包就不细说了。

const express = require('express');
const app = express();
app.use(express.static('../调查问卷'))//要托管的文件夹地址
app.listen(3000, ()=>{
    console.log("服务已经启动, 3000端口监听中...");
});

只要在同一局域网下就能访问这个调查问卷了,不过,不可能让所有调查对象都在一个网络下,所以,这里可以使用了花生壳内网穿透工具(直接在网上搜官网注册就能使用体验版,还有很多的内网穿透工具),使用外网也能访问到我的问卷,

三、花生壳的使用

不下载app也可以直接使用花生壳管理平台,注册账号,进入内网穿透。

https://console.hsk.oray.com/

添加映射,选择http映射,内网主机填本机地址,(不知道自己主机的可以在cmd中运行ipconfig查看),端口填写托管的端口。

添加完映射后开启映射,然后外网就能通过这个访问地址访问到自己的内网主机了。

四、获取数据

假设这是html上的表单

    <form name="input" action="http://10.50.119.116:8000" method="get">
        年级:<input id="aa"type="text"name="a" >
        最爱吃的水果:<input id="bb"type="text"name="b" >
    </form>

表单是以键值对的形式提交的数据,这里name=”a”,a就是键,值为用户输入的内容,下面服务器处理的时候用req.query.a就代表用户输入的内容。

Nodejs服务器获取数据代码,这个监听端口需要和静态托管的端口不同

const express = require('express');
const app = express();
const fs = require('fs');
app.get('', (req, res) => {   
    var kk = req.query;
    res.send();
    var data = "年级:" + kk.a + "&ensp;"+"最爱吃的水果:" + kk.b + "\n";
    fs.appendFile('表单数据.txt', data, function (err) {
        if (err) {
            return console.error(err);
        }
        console.log("已写入");
    });
});
app.listen(8000, ()=>{
    console.log("服务已经启动, 8000端口监听中...");
});

表单数据.txt文件中就会出现如下形式的数据

但是上述方法获取的数据,只是内网用户给的,外网只能访问页面, 如果表单提交到我的本地端口,外网用户不能向我的ip提交数据,所以,这里再使用一条映射(因为免费版的刚好给了两条映射),映射到本机的8000端口。

修改表单向另一个外网端口提交数据

    <form name="input" action="http://51t9j08858.51vip.biz:52276" method="get">
        年级:<input id="aa"type="text"name="a" >
        最爱吃的水果:<input id="bb"type="text"name="b" >
    </form>

再看看fs写文件吧 ,用writeFile的话会清空文件再写入,用appendFile就能一条一条往后添加

    fs.appendFile('表单数据.txt', data, function (err) {
        if (err) {
            return console.error(err);
        }
        console.log("已写入");
    });

这里表单数据.txt与两个服务器js文件在同级目录中,所有不添加路径 

然后表单就提交到新的映射地址,数据会传递到本地,就可以通过读写文件将数据写在txt文件中,由于是使用内网穿透的方式获取的数据,就拿不到访问对象的ip,而且这也是个人使用的数据,就没有必要使用sql数据库存储数据了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值