生活随笔
收集整理的這篇文章主要介紹了
Egg.js上传图片到对象存储COS并按照日期存储图片
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上傳到COS上的參考文檔可以參考官方的文檔:https://cloud.tencent.com/document/product/436/8629#.E4.B8.8A.E4.BC.A0.E5.AF.B9.E8.B1.A1
上傳圖片到騰訊云的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) {if (!err
) {resolve(data
);} else {reject(err
);}});})}
上傳文件根據時間進行文件夾分類
在service中定義好上傳到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) {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',};
總結
以上是生活随笔為你收集整理的Egg.js上传图片到对象存储COS并按照日期存储图片的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。