一、Post提交
1、前端代码:
<!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <form action="http://127.0.0.1:4050/dopost" method="post" enctype="multipart/form-data"> 姓名<input type="" name="name" /> <br /> <input type="radio" name="sex" value="男" />男 <input type="radio" name="sex" value="女" />女 <br/> 图片:<input type="file" name="imgs"> <br/> <input type="submit" value="提交"/> </form> </body> </html>
2、JS代码:
var formidable = require('formidable');//引用图片上传的包:https://www.npmjs.com/package/formidable var http = require('http'); var util = require('util'); var fs = require("fs"); var sd = require("silly-datetime"); var path = require("path"); http.createServer(function(req,res){ console.log(1); console.log(req.url); if (req.url == '/dopost' && req.method.toLowerCase() == 'post') { // parse a file upload var form = new formidable.IncomingForm(); form.uploadDir = "./mydir";//设置图片保存路径 form.parse(req, function(err, fields, files) { console.log(fields); console.log(files); res.writeHead(200, {'content-type': 'text/plain'}); res.write('received upload: '); res.end(util.inspect({fields: fields, files: files})); /*此段代码可实现更改图片名 var ttt = sd.format(new Date(), 'YYYYMMDDHHmmss'); var ran = parseInt(Math.random() * 89999 + 10000); var extname = path.extname(files.imgs.name); //执行改名 var oldpath = __dirname + "/" + files.imgs.path; //新的路径由三个部分组成:时间戳、随机数、拓展名 var newpath = __dirname + "/mydir/" + ttt + ran + extname; //改名 fs.rename(oldpath,newpath,function(err){ if(err){ throw Error("改名失败"); } res.writeHead(200, {'content-type': 'text/plain'}); res.end("成功"); });*/ }); return; } }).listen("4050","127.0.0.1");
3、输出结果如下:
{ name: '1', sex: '男' } { imgs: File { domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, size: 178852, path: 'mydir\upload_dc2eb054a1b78f04543fc2d273b2bd03', name: '1.gif', type: 'image/gif', hash: null, lastModifiedDate: Wed Aug 03 2016 11:17:57 GMT+0800 (中国标准时间), _writeStream: WriteStream { _writableState: [Object], writable: true, domain: null, _events: {}, _eventsCount: 0, _maxListeners: undefined, path: 'mydir\upload_dc2eb054a1b78f04543fc2d273b2bd03', fd: null, flags: 'w', mode: 438, start: undefined, pos: undefined, bytesWritten: 178852, closed: true } } }
PS:1、formidable 是第三方模块,需要先在工作区安装(npm install formidable),网址:https://www.npmjs.com/package/formidable;
二、模板引擎EJS
1、npm网址:https://www.npmjs.com/package/ejs,在本地安装ejs;
2、代码如下:
HTML代码:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <p>测试ejs(版本 <%= s %> )</p> </body> </html>
JS代码:
var http=require("http"); var fs=require("fs"); var ejs=require("ejs");//引入ejs http.createServer(function(req,res){ //1.读取静态文件 fs.readFile("./View/ejstest.html",function(err,data){ if(err) { throw err; } var content=data.toString(); var data={ s:"1.0" }; var results=ejs.render(content,data); res.writeHead(200,{"Content-Type":"text/html;charset=UTF8"}); res.end(results); }); }).listen("4050","127.0.0.1");
在浏览器中输入:http://127.0.0.1:4050/ 运行结果:测试ejs(版本 1.0 )