这是我参与11月更文挑战的第21天,活动详情查看:2021最后一次更文挑战
上传到COS上的参考文档可以参考官方的文档:cloud.tencent.com/document/pr…
上传图片到腾讯云的COS上
- 控制器中写法
async doAdd() {
const { ctx } = this;
const body = ctx.request.body;
const file = ctx.request.files[0];
const source = fs.createReadStream(file.filepath);
if (file) {
await this.ctx.service.tools.uploadCos(file.filename,source);
}
ctx.body = {
body, file
}
}
- 在service中定义好要上传的函数
async uploadCos(filename, body) {
var cos = new COS({
SecretId: 'AKID4xbz6wWNyIM8droUt0qQjkUyBCwPbW9V',
SecretKey: '7xWoqb7OSHpxxx'
});
return new Promise((resolve,reject) => {
cos.putObject({
Bucket: 'eggshop-1301559367', /* 必须 */
Region: 'ap-beijing', /* 必须 */
Key: filename, /* 必须 */
StorageClass: 'STANDARD',
Body: body, // 上传文件对象
onProgress: function (progressData) {
console.log(JSON.stringify(progressData));
}
}, function (err, data) {
// console.log(err || data);
if (!err) {
resolve(data);
} else {
reject(err);
}
});
})
}
上传文件根据时间进行文件夹分类
- 在service中定义好上传到COS上的文件路径
// 上传到COS上的路径格式
getCosUploadFile(filename) {
// 获取当前的日期
let dir = sd.format(new Date(), 'YYYYMMDD');
// 生成文件名称
let unix = this.getUnixTime();
let saveDir = dir + "/" + unix + path.extname(filename)
return saveDir;
}
- 在service中定义好上传到COS上的函数
async uploadCos(filename, body) {
var cos = new COS({
SecretId: 'AKID4xbz6wWNyIM8droUt0qQjkUyBCwPbW9V',
SecretKey: '7xWoqb7OSHp65nEOGsCF1WkhNltDG2bs'
});
return new Promise((resolve,reject) => {
cos.putObject({
Bucket: 'eggshop-1301559367', /* 必须 */
Region: 'ap-beijing', /* 必须 */
Key: filename, /* 必须 */
StorageClass: 'STANDARD',
Body: body, // 上传文件对象
onProgress: function (progressData) {
console.log(JSON.stringify(progressData));
}
}, function (err, data) {
// console.log(err || data);
if (!err) {
resolve(data);
} else {
reject(err);
}
});
})
}
- 在控制器中的写法
async doAdd() {
const { ctx } = this;
const body = ctx.request.body;
const file = ctx.request.files[0];
if (file) {
const source = fs.createReadStream(file.filepath);
let filename = this.ctx.service.tools.getCosUploadFile(file.filename);
await this.ctx.service.tools.uploadCos(filename,source);
}
ctx.body = {
body, file
}
}
注意:如果上传到COS上的图片路径中包含小数点,是因为获取时间戳的时间需要向上进行取整。
getUnixTime() {
let obj = new Date();
return Math.ceil(obj.getTime() / 1000);
}
将本地数据库上传到云上
- 将数据库的结构和数据存储到本地
- 建立一个云数据库并通过Navicat进行连接后,通过运行SQL文件导入我们第一步创建的SQL文件。
- 修改数据库配置
config.sequelize = {
dialect: 'mysql',
host: 'rm-2zenx6363vhj8129ryo.mysql.rds.aliyuncs.com',
port: 3306,
username: "xxx",
password: "xxx",
database: 'eggshop',
};