表单提交后端如何接收数据_html怎么接收表单提交的内容

表单提交后端如何接收数据_html怎么接收表单提交的内容用POST请求,后台原生接收的一个公式:req.addListener("data",function(chunk){alldata+=chunk;})//当全部传输完毕之后req.addListener("end",function(){console.log(alldata,toString());req.end("success");})现…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

用POST请求,后台原生接收的一个公式:

req.addListener("data",function(chunk){ 
   
   alldata += chunk;
})
//当全部传输完毕之后
req.addListener("end",function(){ 
   
    console.log(alldata,toString());
    req.end("success");
})

现举例使用原生post请求公式在后台接收数据
表单页面:

//因为后面有图片上传,所以需要在form中添加属性 enctype="multipart/form-data"
<form action="http://127.0.0.1:2000/dopost" enctype="multipart/form-data" method="post">
    <p>
        姓名:<input type="text" name="name">
    </p>
    <p>
        性别:<input type="radio" name="sex" value="男"><input type="radio" name="sex" value="女"></p>
    <p>
        图片:
        <input type="file" name="picture">
    </p>
    <p>
        爱好:<input type="checkbox" name="hobby" value="网球">网球
              <input type="checkbox" name="hobby" value="足球">足球
              <input type="checkbox" name="hobby" value="羽毛球">羽毛球

    </p>
    <p>
        <input type="submit"/>
    </p>

</form>

接收程序:

var querystring = require("querystring");
//创建服务器
var server = http.createServer(function (req,res) { 
   
    //如果你访问的地址是表单所提交的这个地址,并且表单提交的方式是POST
    // toLowerCase即将字母都转为小写
    //可能接受一小段之后就去给别人服务了,放置过大的表单阻塞了整个进程
    if(req.url == "/dopost"&&req.method.toLowerCase() == "post"){
        var alldata = "";
        req.addListener("data",function (chunk) { 
   
            alldata += chunk;
            console.log(chunk);
            //全部传输完毕
            req.addListener("end",function () { 
   
              var datastring = alldata.toString();
             var data = querystring.parse(datastring,null,null);
             console.log(data);

               res.end("success");

            })

        });
    }

}).listen(1000,'127.0.0.1');
console.log(1);

如果不将接收到的数据序列化,输出的将是一串二进制的缓存数据:
这里写图片描述
序列化之后:
这里写图片描述

然而,我们可以采取引入模块的做法来简化原生代码,并且可以实现文件上传的:
首先,我们需要在cmd或者powershell中安装这个模块:
这里写图片描述

然后,具体实现代码:

“`
var http = require(“http”);
var fs = require(“fs”);
var querystring = require(“querystring”);
var formidable = require(“formidable”);
var util = require(“util”);
//创建服务器
var server = http.createServer(function (req,res) {
//如果你访问的地址是表单所提交的这个地址,并且表单提交的方式是POST
// toLowerCase即将字母都转为小写
//可能接受一小段之后就去给别人服务了,放置过大的表单阻塞了整个进程
if(req.url == “/dopost”&&req.method.toLowerCase() == “post”){
var form = new formidable.IncomingForm();
//设置文文件上传存刚的地址
form.uploadDir = “./uploads”;
//执行里面回调函数时候,表单已经全部接受完毕
form.parse(req, function(err, fields, files) {

        //所有的文本域,单选框都放在fields中,所有的文件域都放在files中
        // res.writeHead(200, {'content-type': 'text/plain'});
        // res.write('received upload:\n\n');
       console.log( util.inspect({fields: fields, files: files}));
        res.end("success");

        // res.end(util.inspect({fields: fields, files: files}));
    });


}

}).listen(2000,’127.0.0.1’);
console.log(1);
“`
util.inspect(object,[showHidden],[depth],[colors])是一个将任意对象转换为字符串的函数,通常用于调试和错误输出。它至少接受一个参数object,即要转换的对象。fields和files都是对象,我们利用util模块将其输出。 可以看到输出输出结果如下
这里写图片描述

我们利用这句语句:

 form.uploadDir = "./uploads";

将表单提交的文件存储到一个名为uploads的文件夹中

加强版:现在我们希望图片等文件上传之后,能够按照我们希望的格式存储下来:
我们可以看到在输出的files对象中,有path这个属性,现在我们的目的就是修改这个存储的路径为我们想要的格式这里写图片描述
1.修改文件路径,我们联想到使用fs模块中的重命名rename方法
2.我们将以前的路径存储下来,作为renname函数中的第一个参数

var oldpath =__dirname + "/"+ files.picture.path;

3.获取文件的扩展名:

   var path = require("path");
   var extname = path.extname(files.picture.name);

4.目的文件名是当前事件加上四位随机数再加上文件的扩展名

  var sd = require("silly-datetime");
  var ttt= sd.format(new Date(),'YYYYMMDDHHmm');
  //产生一个随机数
  var ran = parseInt(Math.random()*89999+10000);
  var newpath = __dirname + "/uploads/"+ttt+ran+extname;

5.将个参数传入函数


  fs.rename(oldpath,newpath,function (err) { 
   
                if(err){
                    throw Error("改名失败");
                }
                res.writeHead(200,{
  
  'Content-Type':'text/html;charset=UTF8'});
                res.end("成功");

            });

这样当表单上传图片文件的时候,就可以存储为我们想要的文件名了:
这里写图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/185215.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • lc5找回windows账户信息

    lc5找回windows账户信息  示例:利用lc5获取winserver2003的账户信息。  1. 安装lc5。百度搜索lc5下载安装包,并将lc5安装到winserver2003虚拟机上。  2. 可以用一下命令创建几个待测试的账号    命令行:netusernamepassword/add创建用户           netusername…

    2022年7月24日
    7
  • unity麻将开发视频教程_一屏双人单机手机游戏

    unity麻将开发视频教程_一屏双人单机手机游戏小实习生一枚,刚入门unity,利用一周的时间做了个单机简单的二人小麻将只有java基础,从来没学过C#的我,刚开始很懵逼,但是既然动手做了就开始吧~!先上成品图因为公司都用比较稳定的版本,所以我是从比较老的版本unity4.7上手学习的刚开始学什么都不懂,参考了一个别人写的斗地主demo,所以代码比较累赘…你们可以改良一下二人麻将介绍牌型分为:条

    2022年8月29日
    4
  • ADC RF中频采样 Vivado Verilog 联合 matlab 进行带通滤波器设计与仿真

    ADC RF中频采样 Vivado Verilog 联合 matlab 进行带通滤波器设计与仿真1.滤波器参数计算RF中频信号的频率范围为70MHz±2MHz,采样频率为40.625MHz。采样后信号的频谱是原信号频谱以40.625MHz为周期的频谱搬移,根据奈奎斯特采样定理,40.625MHz采样率的奈奎斯特采样区为[N*20.3125,(N+1)*20.3125]MHz(N为自然数)。频谱搬移在第一奈奎斯特采样区为11.25MHz±2MHz(负频率向右的两次频移)。所以滤波器的通带需要设计为9.25MHz~13.25MHz通过的带通滤波器。2.通过matlab的fdatool工具进行滤波器

    2022年5月30日
    46
  • 客服客户聊天系统源码分享[通俗易懂]

    客服客户聊天系统源码分享[通俗易懂]静态H5聊天对话框html源码客服系统代码(3)此程序可用作客户与客服聊天使用,也可以作为app程序嵌入的聊天功能或者站内聊天使用的代码。运行视频效果:链接:https://pan.baidu.com/s/1lMbXgY3rVRw4ZFfwePJOTw提取码:bfyh复制这段内容后打开百度网盘手机App,操作更方便哦静态H5聊天输入对话框html代码(1)静态H5聊天输入对话框html代码(2)上节讲了消息对话如何实现,上节规划中是来如何实现做到推送实时刷新,看了ba.

    2022年9月15日
    1
  • web前端面试题汇总_web前端面试题模拟

    web前端面试题汇总_web前端面试题模拟1.一些开放性题目1.自我介绍:除了基本个人信息以外,面试官更想听的是你与众不同的地方和你的优势。2.项目介绍3.如何看待前端开发?4.平时是如何学习前端开发的?5.未来三到五年的规划是怎样的?position的值,relative和absolute分别是相对于谁进行定位的?§ absolute :生成绝对定位的元素,相对于最近一级的定位不是static的父元素来进行定位。§ fixed…

    2022年8月27日
    5
  • spring源码搭建_手赚网最新源码

    spring源码搭建_手赚网最新源码目录楔子Spring源码下载github下载gitee下载将项目导入开发工具选择版本为5.2.x修改IDEA中Gradle配置如下确认IDEA中的Kotlin是否生效添加阿里云镜像Reload项目耐心等待编译完成新建Gradle模块楔子学习Spring源码有两种方式,一种是直接引入Spring依赖,读静态源码或者调试;一种是自己编译Spring源码。小七觉得如果想要更好的理解Spring源码,自己编译Spring源码是很有必要的,一方面我们可以修改源码,方便调试验证我

    2022年8月12日
    5

发表回复

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

关注全栈程序员社区公众号