node通过formidable上传图片模块功能实现

var fs=require("fs");
var formidable=require("formidable");
/*
* 上传图片的模块
* req,请求对象
* picName,上传name名字
* cb:回调函数
* 返回结果:
*   cb({
        status:1,//1、上传的是一个空文件  2上传成功啦 3 上传格式错误
        params:params  //表单当中,除了上传文件之外的内容 。
        newName:图片的名字。
        msg:结果的文字说明
    })*/
module.exports.upPic=function(req,picName,cb){
    var form = new formidable.IncomingForm();   //创建上传表单
    form.encoding = 'utf-8';        //设置编辑
    form.uploadDir = "./upload"     //设置上传目录
    form.keepExtensions = true;     //保留后缀
    form.maxFieldsSize = 2 * 1024 * 1024;   //文件大小
    form.parse(req,(err,params,file)=>{
        if(file[picName].size<=0){
            fs.unlink(file[picName].path,(err)=>{
                cb({
                    status:1,//上传的是一个空文件
                    params:params,
                    msg:"请选择上传的图片"
                })
            })
        }else{
            var num=file[picName].path.lastIndexOf(".");
            var extension=file[picName].path.substr(num).toLowerCase();
            //支持图片上传的格式。
            var imgType=".jpg.jpeg.png.gif";
            //验证上传图片的类型是不是图片格式
            if(imgType.includes(extension)){
                var newName=(new Date()).getTime()+extension;
                //改变名字(重命名),异步
                fs.rename(file[picName].path,form.uploadDir+"/"+newName,(err)=>{
                    cb({
                        status:2,//上传成功啦
                        params:params,
                        newName:newName,
                        msg:"上传成功"
                    })
                })
            }else{
                fs.unlink(file[picName].path,(err)=>{
                    cb({
                        status:3,//上传格式错误
                        params:params,
                        msg:`请上传${imgType}格式的图片`
                    })
                })
            }
        }
    })
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值