16 - formidable的上传图片的处理

2017-10-25  本文已影响0人  小草莓蹦蹦跳

var sd = require('silly-datetime');

调用format()方法对现在的时间进行格式化

 var nameTime = sd.format(new Date(),'YYYYMMDD HHmmss');
var nameRandom = parseInt(Math.random(0,1)*89999+100000);


var formidable = require('formidable');
if(req.url == '/dopost' && req.method.toLowerCase() == 'post'){
}
 var form = new formidable.IncomingForm();
  form.uploadDir = './upload';
var extName = path.extname(files.tupian.path);
var newPath = __dirname + '/upload'+ nameTime + nameRandom + extName;
var oldPath = __dirname + '/' + files.tupian.path;
   fs.rename(oldPath,newPath,function (err) {
                res.end('success');
            })
//处理请求,我们需要对对应的图片的路径进行自定义设置规则
/*一般设置图片的规则我们采用当前时间的时间戳加对应的一个随机数据构成
 * 例如:2017-10-20 15:32:20 时间戳的格式 20171020153220
 * */


var http = require('http');

//处理文件上传的请求
var formidable = require('formidable');

//采用第三方包,将任何时间格式,格式成我们需要的格式
var sd = require('silly-datetime');

//导入path包,用于获取图片的后缀名
var path = require('path');

var fs = require('fs');

var server = http.createServer(function (req, res) {

    //对请求的路径和请求方法进行判断
    if(req.url == '/dopost' && req.method.toLowerCase() == 'post'){

        /*0.创建表单处理上传*/
        var form = new formidable.IncomingForm();

        /*0.1在解析之前,设置原来的上传的路径*/
        form.uploadDir = './upload';


        /*1.1设置时间戳*/
        var nameTime = sd.format(new Date(),'YYYYMMDD HHmmss');

        /*1.2设置随机数字*/
        var nameRandom = parseInt(Math.random(0,1)*89999+100000);

        /*1.解析*/
        /*我们需要设置两个名称路径
         * 一个新的路径和一个旧的路径
         * 然后使用新的路径替换旧的路径*/


        form.parse(req,function (err, fields, files) {
            /*我们需要获取对应的图片的后缀名,需要利用files.tupian.path来获取对应的后缀名*/
            console.log(files.tupian.path);
            /*1.3获取后缀名*/
            var extName = path.extname(files.tupian.path);
            console.log(extName);

            /*1.4设置新的路径
             * 当我们使用新的路径替换旧的路径的时候,我们一般使用全路径所以我们设置
             * 如果想要放在upload文件中,则需要拼接两个/upload,因为系统会将最后一个斜杠之前的都解析成目录,后面的都是文件名
             * 路径的时候,最好使用全路径*/
            var newPath = __dirname + '/upload/upload'+ nameTime + nameRandom + 'abs'+ extName;

            /*1.5获取旧的路径*/
            var oldPath = __dirname + '/' + files.tupian.path;

            /*1.6使用新的路径替换旧的路径
             * rename:重命名
             * 第一个参数表示旧的路径
             *第二个参数表示新的路径
             * 第三个参数表示回调*/
            fs.rename(oldPath,newPath,function (err) {
                if (err){
                    console.log('重命名不成功');
                    return;
                }
                res.end('success');
            })
        })
    }

});

server.listen(3000,'127.0.0.1');
上一篇 下一篇

猜你喜欢

热点阅读