Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >表单提交后端如何接收数据_html怎么接收表单提交的内容

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

作者头像
全栈程序员站长
发布于 2022-11-08 06:58:51
发布于 2022-11-08 06:58:51
6.7K01
代码可运行
举报
运行总次数:1
代码可运行

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
req.addListener("data",function(chunk){ 
   
   alldata += chunk;
})
//当全部传输完毕之后
req.addListener("end",function(){ 
   
    console.log(alldata,toString());
    req.end("success");
})

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//因为后面有图片上传,所以需要在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>

接收程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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) {

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
        //所有的文本域,单选框都放在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模块将其输出。 可以看到输出输出结果如下

我们利用这句语句:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 form.uploadDir = "./uploads";

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

加强版:现在我们希望图片等文件上传之后,能够按照我们希望的格式存储下来: 我们可以看到在输出的files对象中,有path这个属性,现在我们的目的就是修改这个存储的路径为我们想要的格式

1.修改文件路径,我们联想到使用fs模块中的重命名rename方法 2.我们将以前的路径存储下来,作为renname函数中的第一个参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
var oldpath =__dirname + "/"+ files.picture.path;

3.获取文件的扩展名:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   var path = require("path");
var extname = path.extname(files.picture.name);

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  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.将个参数传入函数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
fs.rename(oldpath,newpath,function (err) { 

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

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

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年10月6日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
前端技术前沿7
使用response.writeHead()函数发送一个HTTP状态200和HTTP头的内容类型content-type,使用response.write()函数在HTTP相应主体中发送文本。
达达前端
2019/07/03
5630
前端技术前沿7
Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)
前言   前面讲了一个构建网站的示例,这次在此基础上再说说web的常规功能----文件上传,示例以一个上传图片的功能为例子   上传功能命名用formidable实现,示例很简单!   PS:最近比较忙,距上一次更新已经比较久了^_^! formidable简介   nodejs原生实现上传还是比较麻烦,有兴趣的自已去参考一下网上有网友写的代码   这里选择了formidable,也是github上同类功能模块人气比较高的 https://github.com/felixge/node-formidabl
Porschev
2018/01/16
1.5K0
Nodejs学习笔记(八)--- Node.js + Express 实现上传文件功能(felixge/node-formidable)
node表单提交POST提交
前几天给大家介绍了使用node的提交(get)获取到表单提交的内容,get提交的参数查询部分(query)可以获得到,由于get提交的内容在url显示,而post提交处理机制,为了保障安全性不显示在url中,下面案例介绍下post提交案例!
十月梦想
2018/08/29
5.2K0
一些小众却有用的 Node.js 包
yargs 是一个用来处理命令行参数的包,可以帮你处理自行设置的命令行标志和输入的任何类型的数据,其中包括布尔值、浮点数和字符串等。这个包非常简单明了,不需要在项目中编写大量的样板代码。
疯狂的技术宅
2020/10/22
9240
一些小众却有用的 Node.js 包
读书笔记-《了不起的node.js》- HTTP
HTTP协议建立在请求和响应的概念上,对应在Node.js中就是有http.ServerRequest和http.ServerResponse这两个构造器构造出来的对象。
用户3258338
2019/07/19
6240
读书笔记-《了不起的node.js》- HTTP
开心档-软件开发入门教程网之Node.js GET/POST请求
Node.js GET/POST请求 在很多场景中,我们的服务器都需要跟用户的浏览器打交道,如表单提交。 表单提交到服务器一般都使用 GET/POST 请求。 本章节我们将为大家介绍 Node.js
爱学iOS的小麦子
2023/05/09
3820
nodejs核心api-http模块
我们知道传统的HTPP服务器会由Aphche、Nginx、IIS之类的软件来担任,但是nodejs并不需要,nodejs提供了http模块,自身就可以用来构建服务器,而且http模块是由C++实现的,性能可靠。大部分的node使用者,都是用node来做Web API的,而HTTP模块是提供Web API的基础。为了支持所有的HTTP应用,node中的HTTTP模块提供的API是偏向底层化的。利用HTTP模块,我们可以简单快速搭建一个Web Server。
conanma
2022/01/04
2.6K0
node表单文件上传(formidable)实现
在node表单进行上传时候,常规的数据传递没有什么问题,当涉及到文件上传(图片,音视频,文本等)我们发现,接收的仅仅是这个上传的文件名,而非资源本身,这样如何能达到我们的要求呢?此时我们需要引入第三方
十月梦想
2018/08/29
6910
文件分片上传设计
现在是接近凌晨了,突然有伙伴给我提到了文件分片上传的事情,我一想,这个我熟悉呀。因为在若干月前,我想亲手写了这部分的代码,还给自己整理出了飞书文档。对,一看文件,原来是遥远的2023年6月20日。
shigen
2023/11/08
6670
文件分片上传设计
NodeJS
一. 安装及概述 1. 概述: Node.js 不是一门新的语言,是一个JavaScript运行环境, 简单的说 Node.js 就是运行在服务端的 JavaScript。 2. 特点: 1).单线程 2).异步的非阻塞I/O 3).事件驱动 3. 使用场景: 1).后台开发 2).使用node的npm功能,方便的安装,删除,替换第三方模块 3).node的兼容性较好,Windows,Linux,MacOS均可以使用node环境,node从 0.6版本开始,只要装node,会顺带装npm 二. 模块 1. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。在Node环境中,一个.js文件就称之为一个模块(module)。 2. 好处: 最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Node内置的模块和来自第三方的模块。使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。 3. 注意: exports 和 module.exports 的使用 如果要对外暴露属性或方法,就用 exports 就行,要暴露对象(类似class,包含了很多属性和方法),就用 module.exports。
生南星
2019/07/22
3.2K0
不错的node.js入门
关于 本书致力于教会你如何用Node.js来开发应用,过程中会传授你所有所需的“高级”JavaScript知识。本书绝不是一本“Hello World”的教程。 状态 你正在阅读的已经是本书的最终版。因此,只有当进行错误更正以及针对新版本Node.js的改动进行对应的修正时,才会进行更新。 本书中的代码案例都在Node.js 0.6.11版本中测试过,可以正确工作。 读者对象 本书最适合与我有相似技术背景的读者: 至少对一门诸如Ruby、Python、PHP或者Java这样面向对象的语言有一定的经验;对Ja
脑洞的蜂蜜
2018/02/02
4K0
【nodejs】nodejs 入门实战教程 —— 从上传实例出发
方案:使用一个主文件,它可以被nodejs执行,同时建立不同功能的模块,这些模块可以被主文件和其他模块调用。
前端修罗场
2023/10/07
5150
【nodejs】nodejs 入门实战教程 —— 从上传实例出发
在 Node 中使用 formidable 处理文件上传
在 Node 中使用 formidable 处理文件上传 具体使用方式参照官方文档:https://www.npmjs.com/package/formidable 第一:安装: # npm install --save formidable yarn add formidable 第二:基本使用: var formidable = require('formidable'), http = require('http'), util = require('util'); http
海仔
2021/05/18
1.3K0
NodeJS背后的人:Express
前置知识:需要掌握了解: JavaScript基础语法 、Node.JS环境API 、前端工程\模块化 ·····
Java_慈祥
2024/08/06
7100
NodeJS背后的人:Express
前端之nodejs总结
2.好处: 最大的好处是大大提高了代码的可维护性。其次,编写代码不必从零开始。当一个模块编写完毕,就可以被其他地方引用。我们在编写程序的时候,也经常引用其他模块,包括Node内置的模块和来自第三方的模块。使用模块还可以避免函数名和变量名冲突。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。
江一铭
2022/06/17
1.2K0
Node.js商品管理小实战
config:配置文件,这里我们写了两套配置 开发环境和生产环境,其中index.js为配置文件入口,根据不同的环境返回不同的配置 config/index.js
切图仔
2022/09/14
1.3K0
Node.js商品管理小实战
Node
想要实现其他复杂的操作和效果,都要依靠 宿主环境 提供API,目前,已经嵌入 JavaScript 的宿主环境有多种,最常见的环境就是 浏览器 和 操作系统 ;
jinghong
2020/05/09
11.2K0
Node
node运行js获得输出的三种方式
一.通过console.log输出(我最喜欢的) 1.js脚本 1.js var arguments = process.argv.splice(2); //获得入参 var a= arguments[0]; 取第一个 console.log(a) //输出 2.python脚本 test_1.py import os print(os.popen('node 1.js fuck').read()) #打印结果fuck 二.通过文件读写获取 1.js脚本 1.js //npm环境别忘了装了 var
小小咸鱼YwY
2020/07/02
4.3K0
node+express使用multiparty实现文件上传
文件上传在一个项目中是相对于比较基础的功能,今天分享一下自己是如何在nodejs中使用中间件multiparty实现文件上传的。nodejs环境的搭建就不赘述了,直奔主题吧!
算法与编程之美
2019/07/17
2.1K0
node+express使用multiparty实现文件上传
nodejs创建HTTP服务器与前端通信示例(多demo)
前面几篇都在复习nodejs创建HTTP服务器的若干知识点,本篇将使用原生AJAX和nodejs的HTTP服务器配合写几个DEMO,加深运用理解,也方便时间长回顾备查,客户端使用file访问协议,服务端代码写在app.js中,客户端代码写在index.html中,所有demo均亲测可用。
前端_AWhile
2019/08/29
1.4K0
相关推荐
前端技术前沿7
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档