热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

表单提交后端如何接收数据_html怎么接收表单提交的内容用POST请求,后台原生接收的一个公式:req.addListener(data,function(chunk){all

用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("成功");
});

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


推荐阅读
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • Voicewo在线语音识别转换jQuery插件的特点和示例
    本文介绍了一款名为Voicewo的在线语音识别转换jQuery插件,该插件具有快速、架构、风格、扩展和兼容等特点,适合在互联网应用中使用。同时还提供了一个快速示例供开发人员参考。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • springmvc学习笔记(十):控制器业务方法中通过注解实现封装Javabean接收表单提交的数据
    本文介绍了在springmvc学习笔记系列的第十篇中,控制器的业务方法中如何通过注解实现封装Javabean来接收表单提交的数据。同时还讨论了当有多个注册表单且字段完全相同时,如何将其交给同一个控制器处理。 ... [详细]
  • 在编写业务代码时,常常会遇到复杂的业务逻辑导致代码冗长混乱的情况。为了解决这个问题,可以利用中间件模式来简化代码逻辑。中间件模式可以帮助我们更好地设计架构和代码,提高代码质量。本文介绍了中间件模式的基本概念和用法。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文讨论了如何在codeigniter中识别来自angularjs的请求,并提供了两种方法的代码示例。作者尝试了$this->input->is_ajax_request()和自定义函数is_ajax(),但都没有成功。最后,作者展示了一个ajax请求的示例代码。 ... [详细]
  • 本文介绍了在wepy中运用小顺序页面受权的计划,包含了用户点击作废后的从新受权计划。 ... [详细]
author-avatar
潮流时候男装
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有