Node.js初学第三天

一、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:\n\n‘);
            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 )

  

时间: 2024-10-10 21:16:25

Node.js初学第三天的相关文章

Node.js笔记(三)路由和socket.io

本文参考了<Node应用程序构建--使用MongoDB和backbone>的第二章 -------------------------------- 路由 依赖于ConnectHTTP服务器框架,Express提供了视图渲染和一种描述路由的语言 要使用express,首先要安装express,安装过程不再描述, 看下面一段示例代码: var express = require('express'); var app = express(); app.get('/stooges/:name?',

Node.js初学第一天

Node.Js三大特性:单线程.非阻塞I/O.事件驱动 一.创建第一个HelloWorld 1.正常下载安装Node.js包: 2.cmd命令,进入node.js安装程序所在目录:cd:C:\Program Files\nodejs; 3.创建js文件01_helloworld.js,并书写代码: var http=require("http");//引入http包http.createServer(function(req,res){//创建服务 res.writeHead(200,

node.js学习第三天--文件I/O

1.文件I/O fs模块的基本用法 开发中我们经常会有文件I/O的需求,node.js中提供一个名为fs的模块来支持I/O操作,fs模块的文件I/O是对标准POSIX函数的简单封装. 2.writeFile函数的基本用法 文件I/O,写入是必修课之一.fs模块提供writeFile函数,可以异步的将数据写入一个文件, 如果文件已经存在则会被替换.用法如下: 例:fs.writeFile(filename, data, callback) var fs= require("fs"); f

node.js 初学

cd进入 node.js运行在服务器上的 打开任务管理器 win+r(快捷键)输入cmd回车打开命令行,输入node  文件路径 然后在地址栏访问你监听的地址,注意:在地址栏访问,一定不可以关闭命令行,否则无法访问文件 res.end("执行完毕后输出的内容") server.listen(端口,IP地址)

【Node.js学习笔记三】什么是Node封装模块?(Node Packaged Module.module)

Node封装模块是一个打包的库,它可以很容易的在不同的项目中被共享.重用和安装. 有很多可用于多种用途的不同模块. 例如: Mongoose模块为MongoDB提供了一个ODM Express扩展了Node的HTTP功能 Node.js模块由不同的第三方机构创建,提供现有Node.js所缺乏的重要功能. 每个Node封装模块包含一个 package.json文件,该文件包含元素数据信息,如: 名称 版本 作者 贡献者 以及控制元数据,比如依赖和执行诸如安装与发布动作时,Node包管理器将使用的其

Node.js初学第二天

一.模块 每一个js文件是一个模块:多个js文件相互调用,共同实现一个功能,也叫作一个模块.所以:模块就是一些功能的封装 1>js文件和js文件有两种合作模式: 1.某一个JS文件中提供了函数,供别人使用,只需要暴露函数就行了.用exports和require联合使用: 2.某一个js文件中描述了一个类.module.exports=构造函数名: 2>node_modules文件夹: node中,引包的时候,如果不写“./”,默认是从node_modules中引用相应的js文件:eg:var

Node.js初学

一.安装及环境配置: 两篇文章介绍的非常详细了 http://www.cnblogs.com/seanlv/archive/2011/11/22/2258716.html http://www.tuicool.com/articles/UJNb2eJ 二.测试案例(已解决中文乱码问题) var http = require("http"); http.createServer(function(request, response) { response.writeHead(200, {

vue.js初学(三)模板语法

1:介绍 vue.js允许开发者声明式地将Dom元素绑定至Vue实例的底层,所有的模板都是合法的html,所以能够被遵循规范的浏览器和html解析器解析 在底层的实现上,vue将模板编译成虚拟Dom渲染.结合响应式系统 在应用改变时,vue能够智能地计算出重新渲染组件的最小代价并应用到Dom操作上. 如果你熟悉虚拟dom并且偏爱原生js的语法,你可以不用模板,直接写render函数,使用可选的jsx语法 2:插值 数据绑定 最常见的形式是:Mustache 双大括号. Mustache 标签将被

Node.js初接触(一)

本来还在纠结着到底要学哪一种后台语言呢,突然发现node.js很火,既然能被这么多人推崇,自然是有他的优势的.去百度百科看了一眼,或许是我理解能力太差,并没有了解到很多关于node.js的东西,大概就是知道了Node.js是一种用javascript来编写的服务器端脚本,而node就是提供Javascript运行的平台.好吧,还是模模糊糊,嗯,越是不清楚,就越是能激发我的学习欲望. 今天算是正式开始自学了,我发现对于这个新技术,学习的资源好像不是很多,书和视屏都不是很多,而且据大家评价,即使是入