node07-http
目录:
node01-创建服务器
node02-util
node03-events
node04-buffer
node05-fs
node06-path
node07-http
node08-express
node09-cookie
http模块:
文件上传:
html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>post</title>
<link rel="stylesheet" href="post.css">
</head>
<body>
<form action="/post" method="post" enctype="multipart/form-data">
用户名:<input type="text" name="user"><br>
密码:<input type="password" name="pass"><br>
<input type="file" name="fileup"><br>
<input type="submit" value="提交">
</form>
<div id="time">time</div>
</body>
<script src="post.js"></script>
</html>
js:
window.onload = function(){
var time = document.getElementById("time");
var timer = setInterval(function(){
var ajax = new XMLHttpRequest();
ajax.open("get","/ajax?user=zhaoyang&pass=123",true);
ajax.send();
ajax.onload = function(){
time.innerHTML = ajax.responseText;
}
},1000); }
node(文件上传与get、post请求处理):
/*
* http:超文本传输协议
* http模块:能够搭建服务器环境(模拟的客服端环境)
*
* */ var http = require("http");
var url = require("url");
var fs = require("fs");
var formidable = require("formidable");
var server = http.createServer(function (request,response) {
// console.log(request.url);
var urlObj = url.parse(request.url,true);
// console.log(urlObj);
// console.log(request.method);
// response.end("响应结束"); if(urlObj.pathname == "/10post.html" || urlObj.pathname == "/"){
//访问表单页面
var rs = fs.createReadStream("10post.html");
rs.pipe(response);
// response.end();不能带end()
}else if(urlObj.pathname == "/post"){
// console.log(urlObj);
// request.on("data",function(chunk){
// console.log(chunk);
// }); var form = new formidable.IncomingForm();
form.parse(request,function (err,fields,files) {
// console.log(fields);
console.log(files);
console.log(files.fileup.path);//文件上传的临时路径 files.fileup.path
fs.createReadStream(files.fileup.path).pipe(fs.createWriteStream("./upload/" + files.fileup.name)); });
response.end();
}else if(urlObj.pathname == "/ajax"){
var newTime = new Date();
response.end(newTime.toString());
}else if(urlObj.pathname == "/req"){
console.log(urlObj.query);
var result= "";
request.on("data",function(chunk){
result += chunk.toString();
});
request.on("end",function(err){
response.end("参数是" + result);
})
response.end("参数是" + JSON.stringify(urlObj.query));
}else if(urlObj.pathname != "/favicon.ico"){
//其他的所有页面
// ./post.css
console.log(urlObj.pathname);
fs.createReadStream("." + urlObj.pathname).pipe(response);
}
});
server.listen(2333);
GET、POST请求:
var http = require("http");
var request = http.request({
host:"localhost",
port:"2333",
path:"/req?user=zhaoyang&pass=123",
// path:"/req",
method:"POST",
},function (res) {
console.log(res.statusCode);
var result = "";
res.on("data",function(chunk){
result += chunk;
});
res.on("end",function(err){
console.log(result);
});
});
request.write('{"user":"zhaoyang","pass":"123"}');
request.end();//结束请求体
node07-http的更多相关文章
- node07
---恢复内容开始--- 1.SQL基本查询语句 2.子句 1)WHERE 子句 WHERE key=val WHERE key>val WHERE key1>val1 AND key2& ...
- 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
// test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
// test20.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include<iostream> #include< ...
- hadoop1.2.1的安装
前提:1.机器最好都做ssh免密登录,最后在启动hadoop的时候会简单很多 免密登录看免密登录 2.集群中的虚拟机最好都关闭防火墙,否则很麻烦 3集群中的虚拟机中必须安装jdk. 具体安装步骤如下: ...
- mac 下搭建Elasticsearch 5.4.3分布式集群
一.集群角色 多机集群中的节点可以分为master nodes和data nodes,在配置文件中使用Zen发现(Zen discovery)机制来管理不同节点.Zen发现是ES自带的默认发现机制,使 ...
- 搭建Elasticsearch 5.4分布式集群
多机集群中的节点可以分为master nodes和data nodes,在配置文件中使用Zen发现(Zen discovery)机制来管理不同节点.Zen发现是ES自带的默认发现机制,使用多播发现其它 ...
- Spark2.x(五十六):Queue's AM resource limit exceeded.
背景: 按照业务需求将数据拆分为60份,启动60个application分别运行对每一份数据,application的提交脚本如下: #/bin/sh #LANG=zh_CN.utf8 #export ...
- hadoop学习笔记(九):mr2HA高可用环境搭建及处步使用
本文原创,如需转载,请注明原文链接和作者 所用到的命令的总结: yarn:启动start-yarn.sh 停止stop-yarn.sh zk :zkServer.start ;:zkServer. ...
- Spark以yarn方式运行时抛出异常
Spark以yarn方式运行时抛出异常: cluster.YarnClientSchedulerBackend: Yarn application has already exited with st ...
- 分布式文档存储数据库之MongoDB分片集群
前文我们聊到了mongodb的副本集以及配置副本集,回顾请参考https://www.cnblogs.com/qiuhom-1874/p/13953598.html:今天我们来聊下mongodb的分片 ...
随机推荐
- CBOW and Skip-gram model
转自:https://iksinc.wordpress.com/tag/continuous-bag-of-words-cbow/ 清晰易懂. Vector space model is well k ...
- 【Python】[进程和线程]多进程,多线程,ThreadLocal,进程VS.线程,分布式进程
1.多进程,multiprocessing模块, 进程间的通信:Queue[队列],Pipes[管子]2.多线程, 注意:线程公用变量,混乱 解决方法Lock:因为只有一个锁,所以当要执 ...
- MySql分页算法
PERCONA PERFORMANCE CONFERENCE 2009上,来自雅虎的几位工程师带来了一篇"Efficient Pagination Using MySQL"的报告, ...
- iOS开发小技巧--iOS程序进入后台运行的实现
iOS程序进入后台运行的实现 视频中看到老师用的iOS7,代码中有开启timer,无限请求数据的功能,但是切换到后台,代码就不打印了 自己用的iOS9,进入后台还是可以打印的,再次进入前台也可以正常运 ...
- bzoj2091【Poi2010】The Minima Game
直接dp就好了 每个人肯定会去选最大的,用dp[i]表示选了后i个点时先手-后手的最大值(因为从后往前扫才好转移啊 QwQ~) dp[i]=max(c[j]-dp[j-1]),(j<=i) 直接 ...
- tensrflow python [defunct]
在ubuntu上面安装了GPU版本的tensorflow后,很容易碰到zombie thread 的问题,无法正常关闭tensorflow的线程,用ps aux|grep python可以看到 pyt ...
- <<< MyEclipse软件中的快捷键
-------------------------------------MyEclipse 快捷键1(CTRL)-------------------------------------Ctrl+1 ...
- Logstash-5.0同步.json文件到ElasticSearch-5.0配置文件
logstash/conf/input-file.conf内容如下: input { file { #监听文件的路径. path => ["E:/data_json/*.json&qu ...
- 不从SD卡启动树莓派2
本文你可以学到: berryboot使用,kali安装,开挂的MobaXterm,以及关于通过LABEL和UUID挂载的小技巧. 本文默认你有一定Linux基础,同时针对刚入门的水平,因为这是我的折腾 ...
- js 常用函数收集(基础)
(1).判断是否为数值 function isNum(obj){ return !isNaN(parseFloat(obj)) && isFinite(obj); } (2).判断是否 ...