日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Egg.js上传图片到对象存储COS并按照日期存储图片

發布時間:2024/1/18 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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) {// 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',};

    總結

    以上是生活随笔為你收集整理的Egg.js上传图片到对象存储COS并按照日期存储图片的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。