上传头像
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");