node --- http数据上传
// 通过报头的Transfer-Encoding或Content-Length即可判断请求中是否带有内容
var hasBody = function(req) {return 'transfer-encoding' in req.headers || 'content-length' in req.headers;
};// 在HTTP_Parser解析报头结束后,报文内容部分会通过data事件触发
function (req, res) {if (hasBody(req)) {var buffers = [];req.on('data', function (chunk) {buffers.push(chunk);});req.on('end', function () {req.rawBody = Buffer.concat(buffers).toString();handle(req, res);});} else {handle(req, res);}
}
表单数据:最为常见的数据提交就是通过网页表单提交数据到服务器端:
<form action="/upload" method="post"><label for="username">Username:</label> <input type="text" name="username" id="username" /><br /><input type="submit" name="submit" value="Submit" />
</form>
// 默认的表单提交,请求头的Content-Type字段值为application/x-www-form-urlencoded
// 即:Content-Type: application/x-www-form-urlencoded
// 解析
var handle = function(req, res) {if (req.headers['content-type'] === 'application/x-www-form-urlencoded') {req.body = querystring.parse(req.rawBody);}todo(req, res);
};
其他格式: JSON和XML文件等,判断和解析他们的原理都比较相似,都是依据Content-Type中的值决定,其中JSON类型的值
为application/json,XML的值为application/xml
// JSON文件
// 对于Node来说,要处理它不需要额外的任何库
var handle = function(req, res) {if (mime(req) === 'application/json') {try {req.body = JSON.parse(req.rawBody);} catch (e) {// 异常内容,响应Bad requestres.writeHead(4000);res.end('Invalid JSON);return;}}todo(req, res);};// XML文件
var xml2js = require('xml2js');
var handle = function (req, res) {if (mime(req) === 'application/xml') {xml2js.parseString(req.rawBody, function (err, xml) {if (err) {// 异常内容, 响应Bad requestres.writeHead(400);res.end('Invalid XML');return;}req.body = xml;todo(req, res);});}
};
node --- http数据上传相关推荐
- 前端点滴(Node.js)(五)---- 构建 Web 应用(二)数据上传
Node.js 2. 数据上传 在实际的业务中,我们往往需要接收一些数据,比如表单数据.文件提交.Json上传.XML上传等等. Node的http模块只对HTTP报文头部进行了解析,然后触发requ ...
- 【Hadoop】HDFS操作、数据上传与下载原理解析、高级特性及底层原理
HDFS操作.数据上传与下载原理解析.高级特性及底层原理 1 HDFS操作 1.1 Web Console网页工具 1.2 命令行 1.2.1 普通的操作命令 1.2.2 管理员命令 1.3 Java ...
- 2020-08-20 将数据上传到 S3 或从S3下载
将数据上传到 S3 在上个 notebook 中,你应该使用给定剽窃/非剽窃文本数据语料库的特征和类别标签创建了两个文件:training.csv 和 test.csv 文件. 以下单元格将加载一些 ...
- 【AllJoyn专题】基于AllJoyn和Yeelink的传感器数据上传与指令下行的研究
接触高通物联网框架AllJoyn不太久,但确是被深深地吸引了.在我看来,促进我深入学习的原因有三点:一.AllJoyn开源,对开源的软硬件总会有种莫名的喜爱,虽然或许不会都深入下去:二.顺应潮流,物联 ...
- MaxCompute Tunnel SDK数据上传利器——BufferedWriter使用指南
为什么80%的码农都做不了架构师?>>> 摘要: MaxCompute 的数据上传接口(Tunnel)定义了数据 block 的概念:一个 block 对应一个 http re ...
- m5310模组数据上传至onenet_NBIOT模组M5310接入中国移动物联网开放平台示例文档
<time>: -t 设备存活时间,标示终端和 OneNET 平台之间连接的存活周 期,设置范围为 10s~86400s: : -u 设置 PUT 和 POST 指令分片长度,范围 0~6 ...
- 检查文件上传完成_“我的数据上传NCBI又报错了...” “攻略拿去!”
在上一期的内容中,我们分享了NCBI测序数据上传的主要步骤和资料填写的注意事项.今天跟大家分享最后一步:原始测序数据的上传以及上传后项目编号的相关类型和含义. 图1 NCBI测序数据上传步骤 | 原始 ...
- Arduino--ESP8266物联网WIFI模块(贝壳物联)--数据上传服务器(单数据接口)
一.简介 随着移动物联网的发展,各场景下对于物联控制.数据上传.远程控制的诉求也越来越多,基于此乐鑫科技推出了便宜好用性价比极高的wifi物联模块--ESP8266,话不多少我们先来看看这个神奇的模块 ...
- m5310模组数据上传至onenet_硬核干货!基于M5310-A的NB-IoT水表通信模块软件业务逻辑分享...
根据不同的应用场景需求,目前NB-IoT水表主要有以下几种方案: 图1 几种常见NB水表方案 接下来将从NB-IoT水表上电开机.模组初始化.入网判断.业务逻辑四个环节来详细讲述,以下业务流程仅供参考 ...
最新文章
- 【OpenCV 4开发详解】Scharr算子
- VSS admin用户忘记密码的解决方法
- 第五节:泛型(泛型类、接口、方法、委托、泛型约束、泛型缓存、逆变和协变)
- B. Balanced Lineup
- 一篇文章告诉你[C++]数组初始化
- python 下载文件-Python实现http文件下载
- [转载] Python基于机器学习方法实现的电影推荐系统
- finally语句与return语句相关问题
- PXE+NFS+FTP+kickstarter无人值守安装linux系统
- Java语言实现矩阵卷积运算
- linux find命令 括号,Linux中find命令细节详解
- 1,标准差的计算 2,标准分数z-score
- 无线信号的接收流程和接收机中基本结构的具体功能
- 大数据工程师技术栈探讨
- 社群运营怎么做更有效?
- Echarts桑基图sankey点击高亮显示
- 灵魂一问-如何彻底防止APK反编译?积累总结
- 本地时间与Web标准时间校对
- 架构道术-从心流视角看费曼学习法
- CDN和京东仓库的那些事儿
热门文章
- 视频图像处理平台对比_对比传统智能结算,戈子视觉结算有了质的改变
- 人机接口要学哪些计算机语言,智能人机接口
- vue axios 发送get请求传递参数给后端失败_Java之Vue插件之Axios
- mendeley引用参考文献不显示_免费文献管理器Mendeley
- 生成FaceBook所需的散列哈希值
- matlab 计算N天前(后)的日期
- VC 2010下安装OpenCV2.4.4
- 20080331 - What is a PID, How is it useful when troubleshooting a system
- 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---23
- Win10 + Python + MXNet + VS2015配置