获取配置参数
// 初始化Client
let co = require('co');
let OSS = require('ali-oss');
let client = new OSS({
region: 'oss-cn-beijing', // 公共云下OSS Region
accessKeyId: '**********************', // AccessKey ID
accessKeySecret: '**********************' // AccessKey Secret
});
公共云下OSS Region和Endpoint对照表
https://help.aliyun.com/document_detail/31837.html?spm=5176.doc32070.2.6.LI3ooG
安装依赖
npm install co
npm install multer
npm install ali-oss
完整代码
let express = require('express');
let router = express.Router();
let fs = require('fs');
// 初始化Client
let co = require('co');
let OSS = require('ali-oss');
let client = new OSS({
region: 'oss-cn-beijing', // 公共云下OSS Region
accessKeyId: '**********************', // AccessKey ID
accessKeySecret: '**********************' // AccessKey Secret
});
let ali_oss = {
bucket: 'img', // Bucket名称
endPoint: 'oss-cn-beijing.aliyuncs.com', // 公共云下OSS 外网Endpoint
};
// 图片上传
let multer = require('multer');
// 文件暂存本地文件夹-自动生成./tmp/
let upload = multer({
dest: './tmp/'
});
// 上传图片
router.post('/uploadFile', upload.single('file'), function(req, res, next) {
// 文件路径
let filePath = './' + req.file.path;
// 文件类型
let temp = req.file.originalname.split('.');
let fileType = temp[temp.length - 1];
let lastName = '.' + fileType;
// 构建图片名
let fileName = Date.now() + lastName;
// 图片重命名
fs.rename(filePath, fileName, (err) => {
if (err) {
res.json({
code: 403,
message: '文件写入失败'
})
} else {
let localFile = './' + fileName;
// 上传到指定目录(/imgs/2021-11-27/1637994928002.jpg)
// 将文件上传到指定目录,需要输入目录名称。
// 若输入的目录不存在,OSS将自动创建对应的文件目录并将文件上传到该目录中。
let key = `imgs/${today()}/${fileName}`;
// 阿里云 上传文件
co(function*() {
client.useBucket(ali_oss.bucket);
let result = yield client.put(key, localFile);
// 上传成功返回图片路径域名-域名修改成自己绑定到oss的
let imageSrc = 'http://oss.liaoquanzhi.cn/' + result.name;
// 上传之后删除本地文件
fs.unlinkSync(localFile);
res.json({
code: 200,
message: '上传成功',
imageUrl: imageSrc
})
}).catch(function(err) {
// 上传之后删除本地文件
fs.unlinkSync(localFile);
res.json({
code: 403,
message: '上传失败',
error: err
})
})
}
})
})
// 今天(2010-11-27)
function today() {
let time = Date.parse(new Date());
let date = new Date(time);
let Y = date.getFullYear() + '-';
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
let D = date.getDate();
return Y + M + D
}
module.exports = router;
源码下载地址/express架构
https://gitee.com/liaoquanzhi/express-ejs-master-oss/tree/master