node.js 依赖管理+路径+POST请求+图片上传

1.我们可以用package.json来管理依赖。

1.我们的依赖包,可能在随时更新,我们永远想保持更新,或者某持某一个版本;
2.项目越来越大的时候,给别人看的时候,没有必要再次共享我们引用的第三方模块。
3.在终端中,使用npm init可以初始化一个package.json文件,用回答问题的方式生成一个新的package.json文件。
4.使用npm install将能安装所有依赖。
npm文档:package.json的介绍

2.路径:

1.require()中的路径,是从当前这个js文件出发,找别的js文件。
2.fs模块引用时找文件都是从命令提示符找到文件所以应当使用绝对路径__dirname

例如:

fs.readFile(__dirname + "/1.txt",function(err,data){
    if(err) { throw err; }
    console.log(data.toString());
 });

3.POST请求

1.node为了追求极致,它是一个小段一个小段接收的。
2.接受了一小段,可能就给别人去服务了。防止一个过大的表单阻塞了整个进程

  • index.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<form action="http://127.0.0.1:3000/dopost" method="post">
    用户名:<input type="text" name="name"><br/>
    密 码:<input type="password" name="password"><br/>
    性 别:<input type="radio" name="sex" value="男">男
    <input type="radio" name="sex" value="女">女
<input type="submit" value="提交">
</form>
</body>
</html>
  • index.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 = "";
        req.addListener("data",function (chunk) {
            alldata+=chunk;
            console.log(chunk)
        })
        req.addListener("end",function () {
            var dataString = alldata.toString();
            res.end("success");
            var dataObj = queryString.parse(dataString);
            console.log(dataObj);
            console.log(dataObj.name);
            console.log(dataObj.sex);

        })
    }
    res.end();
})
server.listen(3000,"127.0.0.1");

填写信息并post提交:

4.图片上传(Formidable工具)

安装工具:npm install formidable

  • index.html
    只要涉及文件上传,那么form标签要加一个属性:
    enctype="multipart/form-data"
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录</title>
</head>
<body>
<form action="http://127.0.0.1:3000/dopost" enctype="multipart/form-data" method="post">
    用户名:<input type="text" name="name"><br/>
    密 码:<input type="password" name="password"><br/>
    <input type="file" name="img">
<input type="submit" value="提交">
</form>
</body>
</html>
  • file.js
var http = require("http");
var formidable = require('formidable');
var util = require("util");
var fs = require("fs");
var sd = require("silly-datetime");
var path = require("path");


//创建服务器
var server = http.createServer(function(req,res){
    //如果你的访问地址是这个,并且请求类型是post
    if(req.url == "/dopost" && req.method.toLowerCase() == "post"){
        //Creates a new incoming form.
        var form = new formidable.IncomingForm();
        //设置文件上传存放地址
        form.uploadDir = "./img";
        //执行里面的回调函数的时候,表单已经全部接收完毕了。
        form.parse(req, function(err, fields, files) {
            //时间,使用了第三方模块,silly-datetime
            var ttt = sd.format(new Date(), 'YYYYMMDDHHmmss');
            var ran = parseInt(Math.random() * 89999 + 10000);
            var extname = path.extname(files.img.name);
            //执行改名
            var oldpath = __dirname + "/" + files.img.path;
            //新的路径由三个部分组成:时间戳、随机数、拓展名
            var newpath = __dirname + "/img/" + ttt + ran + extname;

            //改名
            fs.rename(oldpath,newpath,function(err){
                if(err){
                    throw Error("改名失败");
                }
                res.writeHead(200, {'content-type': 'text/plain'});
                res.end("成功");
            });
        });
    }
});

server.listen(3000,"127.0.0.1");
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人入门学习用笔记、不过多作为参考依据。如有错误欢迎斧正 目录 简书好像不支持锚点、复制搜索(反正也是写给我自己看...
    kirito_song阅读 7,212评论 1 37
  • JavaScript 模块化编程 网站越来越复杂,js代码、js文件也越来越多,会遇到什么问题? 命名冲突; 文件...
    magic_pill阅读 5,348评论 0 1
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,771评论 19 139
  • 2017年4月18日 星期三 雷阵雨 我们家的蚕宝宝大部分都结茧了,就还剩四只没开始结茧。他们结的茧形状大小都不一...
    王紫杨阅读 1,683评论 6 11
  • 图·文/大萌 《一》 前两天,一个好久不联系的高中...
    牛友果星球大萌阅读 5,166评论 10 48