首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >表单提交后端如何接收数据_html怎么接收表单提交的内容

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

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

用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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Linux和Windows间的远程桌面访问
版权声明:本文为博主原创文章,转载请注明出处。 https://blog.csdn.net/u011054333/article/details/79905102
乐百川
2019/05/26
14.1K1
CentOS6 64bit系统一键快速安装VNC桌面实现Linux桌面
一般我们在项目需要用到远程桌面功能的时候会用到Windows系统,但是大部分海外服务器商都是Linux系统的,我们只可以去安装类似CentOS、Debian、Ubuntu等系统。如果我们是本地电脑用的Linux系统是有见过直接可以安装Debian桌面的,但是在VPS、服务器上我们是否可以安装桌面呢?
老蒋
2019/04/16
3.8K0
Linux 配置 VNC 远程桌面
通常都是使用 SSH 远程连接的方式来连接 Linux 主机,那么,当需要图形化桌面进行操作时,就可以配置 VNC 远程桌面来进行操作!
Lucifer三思而后行
2021/09/10
25.7K0
高效安全的远程桌面解决方案:使用TightVNC服务助力远程办公
在工作和生活中,我们经常需要跨越地理界限进行协作或处理事务。这时,远程桌面服务就成了不可或缺的好帮手。然而,并不是所有的Windows设备都支持系统自带的远程桌面功能,这给许多用户带来了困扰。
大海里的番茄
2024/12/20
2K0
高效安全的远程桌面解决方案:使用TightVNC服务助力远程办公
如何在 CentOS 8 上安装和配置 VNC
Virtual Network Computing (VNC) 是一个图形桌面共享系统,它允许你使用本地的键盘和鼠标来远程控制另外一台计算机。
雪梦科技
2020/05/09
9.9K0
如何在 CentOS 8 上安装和配置 VNC
如何在Ubuntu 16.04上安装和配置VNC
VNC或“虚拟网络计算”是一种连接系统,允许您使用键盘和鼠标与远程服务器上的图形桌面环境进行交互。它使得对于不熟悉命令行的用户更容易管理远程服务器上的文件,软件和设置。
小铁匠米兰的v
2018/07/25
5.6K0
如何在Ubuntu 16.04上安装和配置VNC
如何使用VNC进行远程桌面控制
VNC是一款很实用的可以实现远程桌面控制的小工具,我遇到的有两种情况比较常见,一是有时候时候可能你会外出或离开自己办公室(但可以访问到办公司的网络),而很多资料都保存在办公室的台式机上,这时如果突然有问题需要用到那些资料,你又不方便立刻回去,这时你就可以考虑借助笔记本电脑通过VNC远程控制自己的台式机桌面进行操作,处理一些紧急问题;还有一种情况就是你外出或离开办公室后要访问公司的某些网络或网络中的设备、服务器等,而这些网络的访问权限只对办公室里的台式机所在的网段开放,而你的台式机所在网段的权限对你的笔记本所在网络是开放的,这时也可以考虑通过笔记本上的VNC远程控制台式机的桌面,再来访问受限的网络进行相关管理和操作(怎么感觉像打广告似的)。
明志德道
2023/10/21
48.1K0
如何使用VNC进行远程桌面控制
Windows系统下远程连接BeagleBone Black开源电路板桌面
剑影啸清寒
2018/01/02
2.6K0
Windows系统下远程连接BeagleBone Black开源电路板桌面
如何在 Ubuntu 18.04 上安装和配置 VNC
本指南介绍了在 Ubuntu 18.04 系统上安装和配置 VNC 服务器所需的步骤。我们还将向您展示如何通过 SSH 隧道安全地连接到 VNC 服务器。
用户8704835
2021/06/07
2.4K0
CentOS6部署VNC服务端
VNC (Virtual Network Computer)是虚拟网络计算机的缩写。VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美。
星哥玩云
2022/07/03
9450
自建vnc类软件注意事项
vnc软件很多我试过5种todesk、nomachine 、tightvnc、vncserver、radmin
Windows技术交流
2022/04/21
2.8K0
14_使用windows自带的远程桌面mstsc连接Centos7.x远程桌面
 0.4 2018.07.03 15:28* 字数 1038 阅读 17465评论 2喜欢 12
拓荒者
2019/05/31
8.1K1
Linux系统之VNC服务设置方法
江湖有缘
2023/09/23
4K0
Linux系统之VNC服务设置方法
CentOS 7 开启VNC远程桌面
起了给CentOS7 弄VNC的念头是因为今天家里的3389打不开了,毕竟大微软Windows10天天自动更新,我快要崩溃了。所以,索性就把开发平台从Windows转移到了Linux,毕竟最近在学TensorFlow,这玩意不支持Windows(要在Windows下玩还要在Windows下装Docker 好蛋疼,直接Linux不是更好?)。
用户2353021
2020/05/12
7.7K0
CentOS 7 开启VNC远程桌面
Linux Deepin系统安装x11vnc+cpolar实现Windows系统电脑远程其桌面
Cpolar内网穿透是一种安全的内网穿透云服务,可以将内网下的本地服务器通过安全隧道暴露至公网,使得公网用户可以正常访问内网服务。它支持HTTP、HTTPS、TCP协议端口映射。
屿小夏
2024/03/21
6050
Linux Deepin系统安装x11vnc+cpolar实现Windows系统电脑远程其桌面
基于 Ubuntu 搭建 VNC 远程桌面服务
前言 任务时间:5min ~ 10min 必要知识 本教程假设您已学习以下 Ubuntu 基本操作: 连接 SSH 执行命令 编辑文件 如果还没有掌握 Ubuntu 基本操作,您可以参考腾讯云其它 Ubuntu 入门教程进行学习;如您已学有所成,请开始本篇教程之旅。 安装、启动 VNC 任务时间:10min ~ 20min VNC 远程桌面原理 注:本小节内容旨在帮助您更好地了解 Xorg、X11、VNC 等概念和原理,如果你不想了解原理部分,只想快速搭建起 VNC 服务,可以跳过本节内容。 名词解释:
_gongluck
2018/03/08
10.4K1
Ubuntu中使用VNC链接 GNOME具体方法
VNC是虚拟网络控制台的缩写。它 是一款优秀的远程控制工具软件。VNC 是在基于 UNIX 和 Linux 操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美,本篇文章重点为大家讲解一下法Ubuntu中使用VNC链接 GNOME具体方法。
会长君
2023/04/25
2.1K0
关于GPU VNC不能正常使用的说明
https://cloud.tencent.com/document/product/560/36207
Windows技术交流
2022/09/07
4.3K0
如何部署 VNC 远程桌面
VNC(Virtual Network Computing),为一种使用RFB协议的显示屏画面分享及远程操作软件。此软件通过网络可发送键盘与鼠标的动作及实时显示当前屏幕的画面。本教程将教大家安装VNC远程桌面,实现除了SSH方式外,更直接的访问访问系统显示当前真实桌面。本教程需要大家拥有一台服务器,这里推荐大家去腾讯云开发者实验室免费领取一台服务器学习。当然,如果想长时间使用,也可以点这里购买一台。
it大叔
2018/10/29
11.6K1
如何部署 VNC 远程桌面
实现Windows直接远程访问Ubuntu 18.04(旧版本也支持,无需安装第三方桌面,直接使用自带远程工具)
本文主要是讲解如果理由VNC实现Windows远程访问Ubuntu 16.04(因为本文已经有点年头了,之前以16.04版本为例讲解,最新版18.04笔主也测试过是没有问题的),其实网上有很多类似教程,但是很多需要安装第三方桌面(xfce桌面等等),而且很多人不太喜欢安装第三方桌面,很多人像笔者一样喜欢原生自带的桌面(O(∩_∩)O哈哈~有点强迫症)。今天笔者给大家介绍一下,不需要安装其他桌面,使用Ubuntu 16.04原生自带桌面如何进行远程访问。
墨文
2020/02/28
9.5K0
实现Windows直接远程访问Ubuntu 18.04(旧版本也支持,无需安装第三方桌面,直接使用自带远程工具)
相关推荐
Linux和Windows间的远程桌面访问
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档