node上传图片到阿里云oss/指定目录/按照日期生成文件夹

获取配置参数

// 初始化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

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土拨鼠的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值