Nodejs/formidable/上传图片/修改设置图片名称

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<form action="http://127.0.0.1:2000/dopost" method="post" enctype="multipart/form-data">
    <input type="text" name="name"><br><br>
    <input type="text" name="age"><br><br>
    性别:<br>
    <input type="radio" name="sex" value="男">男
    <input type="radio" name="sex" value="女">女<br><br>
    爱好:<br>
    <input type="checkbox" name="like" value="睡觉">睡觉
    <input type="checkbox" name="like" value="画画">画画
    <input type="checkbox" name="like" value="游戏">游戏<br><br>
    <p>
        图片:
        <input type="file" name="tupian" />
    </p><br><br>
    <input type="submit">
</form>
</body>
</html>
/**
 * Created by Administrator on 2017/4/28 0028.
 */
var http = require('http');
var querystring = require('querystring');
var formidable = require('formidable');
var util = require('util');
var path = require('path');
var fs = require('fs');
var sd = require('silly-datetime');
var iTimer = sd.format(new Date(), 'YYYYMMDDHHmmss');


var server = http.createServer(function (req,res) {
    //如果你的访问地址是这个,并且请求类型是post
    if(req.url == '/dopost' && req.method.toLowerCase() == 'post'){
        //解析文件上传
        var form = new formidable.IncomingForm();
        //设置文件上传存放置的位置
        form.uploadDir = "./upload";
        //执行里面回调函数的时候,表单已经全部接收完毕
        form.parse(req, function(err, fields, files) {
            if(err){
                throw err;
            }
            //获取已经有的路径
            var oldpath = __dirname + '/' + files.tupian.path;
            //设置新的路径
            var extname = path.extname(files.tupian.name);//获取原有图片的拓展名.jpg
            var imgran = parseInt(Math.random() * 8999 +1000);
            var imgname = iTimer + imgran;//设置新的图片名称 时间,使用了第三方模块,silly-datetime(iTimer)
            //新的路径由三个部分组成:时间戳、随机数、拓展名
            var newpath = __dirname + '/upload/' + imgname +extname;
            fs.rename(oldpath,newpath,function (err) {
                if(err){
                    throw Error('图片识别失败');
                }
                //所有的文本域、单选框,都在fields存放;
                //所有的文件域,files
                res.writeHead(200, {'content-type': 'text/plain'});
                //res.write('received upload:\n\n');
                res.end('上传成功');
            });
           // util.inspect({fields: fields, files: files});  //检查

        });
    }else if(req.url == '/'){
        //提交index.html表单页面
        fs.readFlie('./index.html',function (data) {
            res.writeHead(200,{"Content-type":"text/html"});
            res.end('data');
        })
    }else{
        res.writeHead(404,{"Content-type":"text/html"});
        res.end('404');
    }
})

server.listen(2000,'127.0.0.1');

欢迎分享本文,转载请保留出处:前端ABC » Nodejs/formidable/上传图片/修改设置图片名称

赞 (3)
分享到:更多 ()

发表评论 0