• Node实现简单的表单+图片上传+路由


    Node实现一个表单处理+图片上传功能,不是用express

    1.使用formidable模块用于上传文件(图片)的处理。注意form表单要使用multipart/form-data属性。

    2.使用chunk分段接收,原因是当接受了一小段,可能就给别人服务了。防止一个过大的表单阻塞了整个进程

    3.上传上去的图片使用formidable自定义路径,用fs改名。

    4.实现简单的路由。

    var http = require("http");
    var querystring = require("querystring");
    var formidable = require('formidable');
    var util = require("util");
    var sd = require("silly-datetime");
    var fs = require("fs");
    var path = require("path");
    
    //创建服务器创建服务器
    var server = http.createServer(function (req, res) {
        if(req.url == "/dopost" && req.method.toLowerCase() == "post") {
            //Create a new incoming form.
            var form = new formidable.IncomingForm();
            form.uploadDir = "./uploads";
            //执行里面的回调函数的时候,表单已经全部接收完毕了
            form.parse(req, function (err, fields, files) {
                if(err) {
                    throw  err;
                }
                console.log(util.inspect({fields:fields,files:files}));
                //时间,使用了第三方模块,silly-datetime
                var ttt = sd.format(new Date(), "YYYMMDDHHmmss");
                var ran = parseInt(Math.random() * 89999 + 10000);
                var extname = path.extname(files.tupian.name);
                //执行改名
                var oldpath = __dirname + "/" + files.tupian.path;
                //新的路径由三个部分组成:时间戳,随机数,拓展名
                var newpath = __dirname + "/uploads/" + ttt + ran + extname;
    
                fs.rename(oldpath,newpath,function (err) {
                    if(err) {
                        throw Error("改名失败")
                    }
                    res.writeHead(200, {"Content-type":"text/plain"});
                    res.end("success");
                });
            });
        }else if(req.url == "/") {
            //呈现form.html
            fs.readFile("./form.html", function (err,data) {
                res.writeHead(200, {"content-type":"text/html"});
                res.end(data);
            })
        }else {
            res.writeHead(404,{"content-type":"text/html"});
            res.end("404");
        }
    });
    
    server.listen(3000,"127.0.0.1");
  • 相关阅读:
    opencv 遍历Mat对象中数据方法-转
    JVM OutOfMemoryError 分析
    hibernate validation HV000030: No validator could be found for constraint
    通过aop实现rpc统一参数校验&异常捕捉
    java8 lambda groupingby 分组保持原来顺序
    递归判断素组是否有序
    dubbo 直连
    Linux 删除openjdk
    telnet命令调用远程dubbo 接口
    git submodule ssh key
  • 原文地址:https://www.cnblogs.com/zhangmingzhao/p/7795908.html
Copyright © 2020-2023  润新知