基于nodeJS实现的几个功能

上传头像

1.使用文件上传中间件multer

npm install multer --save

2.jade界面表单

.form-group
  label File input
  input#file(type='file', name='file')
  p#result
  img#img(src='')
 button#upload.btn.btn-default 提交

3.ajax获取发起请求(upload.js)

/**
 * 图片上传
 */
var url = '/uploadUserImage';
$('#upload').click(function () {
    var file = document.getElementById("file");
    var formData = new FormData();
    formData.append('file',file.files[0]);
    $.ajax({
        url: url,
        type: 'POST',
        data: formData,
        // async: false,
        cache: false,
        contentType: false,
        processData: false,
        success: function(data){
            if(200 === data.code) {
                $('#result').html("上传成功!");
                $('#img').attr('src',data.data);
            } else {
                $('#result').html("上传失败!");
            }
            console.log('imgUploader upload success');
        },
        error: function(){
            $("#result").html("与服务器通信发生错误");
        }
    });
});

4.后台逻辑
(1)导入multer模块

var multer = require('multer');

(2)配置multer服务

var storage = multer.diskStorage({
    destination: function (req, file, cb){
        cb(null, './public/images/upload')
    },
    filename: function (req, file, cb){
        cb(null, file.originalname)
    }
});
var upload = multer({
    storage: storage
});

/**
 * 上传用户头像
 */
router.post('/uploadUserImage', upload.single('file'), user.uploadUserImage);

(3)上传成功后的逻辑

/**
 * 上传用户头像
 */
exports.uploadUserImage = function (req, res) {
    var url = 'http://' + req.headers.host + '/images/upload/' + req.file.originalname;
    res.json({
        code : 200,
        data : url
    });
    // res.end();
};

自定义全局配置文件

1.使用config模块

npm install config --save

2.编写配置内容config.js,可以自定义参数,配置参数对应的值

var config = {
    host: '',
    uploadUrl : ''
};

module.exports = config;

3.在需要声明的文件中导入配置文件,require的内容即为配置文件config.js的绝对路径

/**
 * 导入配置文件
 */
var config = require('./config/config');

打印日志

1.使用log4js

npm install log4js --save

2.在工程根目录下配置log4js.json,参数filename和pattern指定产生的log文件

{
  "appenders":
  [
    {
      "category":"console",
      "type":"console"
    },
    {
      "category":"normal",
      "type": "dateFile",
      "filename": "/var/log/graduation-alfred-jade-log/weibo",
      "alwaysIncludePattern": true,
      "pattern": "-yyyy-MM-dd.log",
      "maxLogSize": 1024,
      "backups": 30
    }
  ],
  "replaceConsole": true,
  "levels":
  {
    "normal":"ALL",
    "console":"ALL"
  }
}

3.引用log4js.json,配置log4js.js

/**
 * 导入模块
 */
var log4js = require("log4js");
/**
 * 导入json配置文件
 */
var log4js_config = require("../log4js.json");
/**
 * 配置路径
 */
log4js.configure(log4js_config);
/**
 * 导出函数
 * @returns {Logger}
 */
exports.getLogger = function (file) {
    return log4js.getLogger(file || 'normal');
};

4.在需要打印日志的文件中导入log模块

/**
 * 使用log4js
 * @type {Logger}
 */
var Logger = require("../Logger.js").getLogger();

5.使用log

Logger.info("");

生成uuid

1.使用uuid模块

npm install uuid --save

2.导入uuid模块

//使用uuid
var UUID = require('uuid');

3.使用uuid

/**
  * 生成激活码
  * UUID.v1 基于时间戳生成(time based)
  * UUID.v4 随机生成(random), 有一定几率重复
  */
 var ActiCode = UUID.v1();

发邮件

1.使用nodemailer模块

npm install nodemailer --save

2.发送邮件逻辑

/**
     * 设置邮件内容
     * @type {string}
     */
    var subject = '';      // 标题
    var text = '' ;    
    var html = '';     // 邮件内容

    /**
     * 创建服务
     */
    var transporter = nodemailer.createTransport({
        service: 'qq',
        port: 465, // SMTP 端口
        secureConnection: true, // 使用 SSL
        auth: {
            user: blogSystem.user,  //发件人
            pass: blogSystem.pass   //smtp密码
        }
    });

    /**
     * 设置参数
     * @type {{from: string, to: string, subject: string, text: string, html: string}}
     */
    var mailOptions = {
        from: blogSystem.user, // 发件地址
        to: email, // 收件列表
        subject: subject, // 标题
        //text和html两者只支持一种
        text: text, // 标题
        html: html // html 内容
    };

    /**
     * 发送邮件
     */
    transporter.sendMail(mailOptions, function(error, info){
        if(error){
            return console.log(error);
        }
        console.log('Message sent: ' + info.response);

    });

产生验证码

使用qr-image模块

npm install qr-image

jade界面

img(src='http://localhost:3000/makeQrCode')

后台请求

var qr_image = require('qr-image');

/**
 * 生成二维码
 */
router.get('/makeQrCode', function(req, res, next) {
    var temp_qrcode = qr_image.image('http://www.baidu.com');
    res.type('png');
    temp_qrcode.pipe(res);
});

发送http请求


1.使用request模块

npm install request --save

2.发送http请求

const AlarmClient = exports;

var request = require('request');

var DEFAULT_URL = ';

function send(code, content, level) {
    var option = {
        url: DEFAULT_URL,
        method: "POST",
        json: true,
        headers: {
            "Content-type": "application/json; charset=UTF-8"
        },
        body: {
            code: code,
            content: content,
            isTest: false,
            level: level
        }
    };
    request(option,function (error, response, body) {
        if (!error && response.statusCode === 200) {
            console.log('request is success ');
        } else {
            console.log('request is error', error);
        }
    });
}

send(code, content, "DEBUG");

猜你喜欢

转载自blog.csdn.net/onpwerb/article/details/70168951