NodeJs中post请求处理

原创 阿晴天 随笔 NodeJs-post 246阅读 2017-12-07 20:16:45 举报

一种情况是上传的文件处理 使用formidable模块 该模块用于文件上传的处理和解析
例子提交一个表单form
重点在JS文件

  1. 同时表单页面注意 添加属性 enctype="multipart/form-data"
    2.JS中引入必要的模块
    http创建服务器
    fs 读取文件 展示页面 改名
    formidable 解析上传的数据文件
    silly-datetime 转换时间格式
    3.创建表单对象
    var form=new formidable.IncomingForm();
    4.设置文件保存的路径
    formidable.uploadDir="path";
    5.改名
    fs.rename("旧路径","新路径",function(err){});

/**

  • Created by Administrator on 2017/12/7 0007.
    /
    var http=require("http"),fs=require("fs"),fs=require("formidable"),sd=require("silly-dateTime");
    http.createServer(function(req,res){
    if(req.url=="/"){
    fs.readFile("./index.html",function(err,data){
    if(err){
    res.end("读取主页失败");console.log(err);//如果有错误看看错误在什么地方
    }eles{
    res.end(data);//拿到数据读取成功
    }
    })
    }
    if(req.u&&req.method.toUpperCase()=="POST"){
    var form=fd.IncomingForm();//通过formidable模块创建表单
    form.uploadDir="./upload";//上传的文件保存一个地址 保存在当前upload文件下
    form.parse(req,function(err,fields,files){//fields保存文本域的数据 files保存文件数据
    if(err){
    res.end("出错了");
    }else{
    var oldPath=files.file.path,oldName=files.file.name;//获取上传文件的原来的路径地址和原来的名字
    var time=sd.format(new Date(),"YYYYMMDDHHmmss");//通过silly-dateTime 的format方法获取现在的时间戳
    var rand=parseInt(Math.random()
    1000);//拼接起来后来跟上随机数
    var arr=oldName.split(".");//拆分原来的名字得到后缀名
    var newName=time+rand+"."+arr[arr.length-1];//得到一个新的名字
    fs.rename(oldPath,"./upload"+newName,function(err){//原来的路径 新的名字保存在文件夹下
    if(err){
    console.log(err);
    res.end("改名失败");
    }else{
    res.end("成功");
    }
    })
    res.end("ok");
    }
    })
    }
    }).listen(4000,"localhost");//端口号设置4000 模拟用本地服务器访问
评论 ( 1 )
最新评论
lingwer111 2017-12-08 12:14:26 1F

用框架就好啦,express什么的,multer中间件,简单点。虽然还是要fs模块rename重命名。