post请求

form.html

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<form action="http://127.0.0.1:3000/dopost" method="post" enctype="multipart/form-data">
<p>
姓名:<input type="text" name="name">
</p>
<p>
性别:
<input type="radio" name="sex" value="男">男
<input type="radio" name="sex" value="女">女
</p>
<p>
爱好
<input type="checkbox" name="hobby" value="睡觉">睡觉
<input type="checkbox" name="hobby" value="看电影">看电影
<input type="checkbox" name="hobby" value="吃饭">吃饭
</p>
<p>
上传
<input type="file" name="tupian">
</p>
<p>
<input type="submit">
</p>
</form>
</body>
</html>
enctype="multipart/form-data"是使用formidable第三方库需要添加的

post.js

var http = require("http");
var querystring = require("querystring");
var server = http.createServer(function(req,res){
if(req.url == "/dopost" && req.method.toLowerCase()=="post"){
var alldata = '';
//下面是post接收数据的一个公式
//node为了极致,他是一小段一小段接收的
//接受了一小段,可能就给别人去服务了。防止一个过大的表单阻塞了整个进程
req.addListener("data",function(chunk){
alldata +=chunk;
console.log(chunk);
});
//全部传输完毕
req.addListener("end",function(chunk){
console.log(alldata.toString());
var datastring = alldata.toString();
var dataObj =querystring.parse(datastring);
console.log(dataObj);
console.log(dataObj.name);
console.log(dataObj.sex);
res.end("success");
});
}
});
server.listen(3000,"127.0.0.1");

node post.js

这里上传图片是真的上传了,默认是放在一个c盘的一个地方,我们可以修改上传图片的路径并且改名的

post1.js

var formidable = require('formidable');
var http = require("http");
var fs = require("fs");
var sd = require("silly-datetime");
var querystring = require("querystring");
var path = require("path"); var server = http.createServer(function(req,res){
if (req.url == '/dopost' && req.method.toLowerCase() == 'post') {
// parse a file upload
var form = new formidable.IncomingForm();
form.uploadDir = "./upload";
form.parse(req, function(err, fields, files) {
// 所有的文本域,单选框都在fields;
// 所有的文件域,都在files;
var ttt = sd.format(new Date(),'YYYYMMDDHHmmss');
var ran = parseInt(Math.random()*89999+1000);
var extname = path.extname(files.tupian.name);
var oldpath =__dirname+"/"+files.tupian.path;
var newpath = __dirname + "/upload/"+ ttt + ran + extname;
fs.rename(oldpath,newpath,function(err){
if(err){
throw Error("改名失败")
};
console.log(fields);
console.log(files);
res.writeHead(200, {'content-type': 'text/plain'});
res.end("success");
});
});
}
});
server.listen(3000,"127.0.0.1");

node post1.js

然后你可以在你同级目录的upload文件夹里查看到你上传的图片

node.js初识10的更多相关文章

  1. node.js系列笔记之node.js初识《一》

    node.js系列笔记之node.js初识<一> 一:环境说明 1.1 Linux系统CentOS 5.8 1.2 nodejs v0.10.15 1.3 nodejs源码下载地址 htt ...

  2. Node.js v0.10.31API手冊-控制台

    Node.js v0.10.31API手冊-文件夹 控制台 Object 用于向 stdout 和 stderr 打印字符.类似于大部分 Web 浏览器提供的 console 对象函数,在这里则是输出 ...

  3. Node.js v0.10.31API手冊-事件

    Node.js v0.10.31API手冊-文件夹 Events(事件) Node里面的很多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStrea ...

  4. Node.js v0.10.31API手工-DNS

    原版的API品种,这是从以前的翻译和翻译风格不同 Node.js v0.10.31API手冊-文件夹 DNS 使用 require('dns') 引入此模块. dns 模块中的全部方法都使用了 C-A ...

  5. .NET程序员也学Node.js——初识Node.js

    清明在石门休了八天假,一眨眼,4月又到中旬了...看到.NET在天朝彻底沦陷而又无能为力,我开始尝试去学习一些新的东西来充实自己,我自然是打死不会去学java的,没有为什么,于是乎,最近开始学习一些前 ...

  6. node.js初识05

    小项目,需求,通过url来查询学生学号和老师的编号 05.js var http = require("http"); var server = http.createServer ...

  7. Node.JS初识

    对Node.JS的认识 1.Node 是一个服务器端 JavaScript 解释器: 2.Node 的目标是帮助程序员构建高度可伸缩的应用程序,编写能够处理数万条同时连接到一个物理机的连接代码.处理高 ...

  8. Node.js 初识2

    原文:https://www.cnblogs.com/zzuIvy/p/nodejs_1.html 测试:node.js部署网站 1.创建js2.js var http = require('http ...

  9. Node.js 初识1

    测试:让Node.js运行脚本 1.创建一个脚本 js1.js console.log('测试'); 2.cmd界面 运行脚本

随机推荐

  1. 关于Linux一些问题和答案

    1.怎样切换输入法? 2.怎样安装KDE? $sudo apt-get install kubuntu-desktop 3.安装KDE以后,怎样切回到默认的gnome? 注销,返回到登录界面,在“登录 ...

  2. 1.7Oob成员变量和局部变量疑难区分

    import java.util.Scanner; public class booleann { private float fWidth; private float fHeight; void ...

  3. 网上常用免费WebServices集合

    天气预报Web服务,数据来源于中国气象局 公用事业http://www.webxml.com.cn/WebServices/WeatherWebService.asmx 中国股票行情分时走势预览缩略图 ...

  4. iOS-静态库,动态库,framework浅析(三)

    创建framework静态库 第一步,新建项目 新建项目.png 第二步,删除系统默认创建的[FMDB.h]和[FMDB.m]文件,导入需要打包的源文件. 导入源码后的工程.png 第三步,修改项目配 ...

  5. python3元组,列表的几个属性

    list1 = ['a', 'b', 'c', 'a'] tuple1 = ('a', 'b', 'c', 'a') 计算list1或者tuple1中元素的个数:  count_a = list1.c ...

  6. (1.11)SQL优化——mysql提示(hint)

    (1.11)mysql hint 关键词:mysql提示 1.SQL提示 (hint)是优化数据库的手段之一,使用它加入一些人为的提示来达到优化操作的目的: 举例: select sql_buffer ...

  7. 前端 HTML body标签相关内容 常用标签 分割线 <hr>

    分割线 <hr> <hr>标签用来在HTML页面中创建水平分隔线,通常用来分隔内容 <!DOCTYPE html> <html lang="en&q ...

  8. PixelRatio使用

    export default class PixelRatioView extends Component { render() { return ( <View style={styles.c ...

  9. shell- 字符串处理 、 扩展的脚本技巧 、 正则表达式

    字符串截取的方法 方法一:使用${}表达式 格式:${var:起始位置:长度} 方法二:使用expr substr 格式:expr substr "$var" 起始位置 长度 方法 ...

  10. 启动Jmeter4.0 后弹出警告: WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at root 0 x80000002. Windows RegCreateKeyEx(...) returned error code 5.

    启动Jmeter4.0 后弹出命令窗口提示信息: WARNING: Could not open/create prefs root node Software\JavaSoft\Prefs at r ...