使用nuxt,express,mysql,nginx创建个人博客系列-16

409
2020-01-24 18:37
5 个月前

上传文章图片

目录:server/admin/routers/index.js

import cos from '../../libs/cos' // 自己把腾讯cos库重新封装了一下
import multer from 'multer' //上传图片中间件,其实就是处理multipart/form-data类型数据
let upload = multer();
router.post('/upload/file', upload.single('file'), async (req, res, next) => {
  // 引入模块
  let file = req.file;
  let type = file.mimetype.split('/')[1]; // 获取图片类型
  let Key = `/upload/${util.getDateDir('months')}${util.createNoncestr()+util.getTimeString()}.${type}` // 设置上传的路径和文件名
  let params = {
    Bucket: `blog-${config.cos.APPID}`, //腾讯cos桶的名称
    /* 必须 */
    Region: 'ap-chengdu', //桶的区域
    /* 必须 */
    Key, //文件名称
    /* 必须 */
    ContentLength: file.size, // 大小
    /* 必须 */
    Body: file.buffer,
    /* 必须 */
    onProgress: function (progressData) { 
      console.log(progressData);
    },
  };
  let result =null ;
  try{
    result = await cos.putObject(params); // 调用
  }catch(err){
    return res.send(util.resError({
      msg:err
    }))
  }

  return res.send(util.resSuccess({
    data: result
  }))

})

腾讯cos库的封装 目录:server/libs/cos.js

import COS from 'cos-nodejs-sdk-v5' // 引入cos的sdk
// 创建实例
import config from '../config' //引入自定义的配置文件
let cos = new COS({
  // AppId: config.cos.APPID,
  SecretId: config.cos.SecretId,
  SecretKey: config.cos.SecretKey,
});

let putObject = (params) => {
  return new Promise((resolve, reject)=>{
    cos.putObject(params,(err, data)=>{
      if(err){
        reject(err)
      }else{
        resolve(data)
      }
    })
  })
}


export default {
  putObject
}

添加config
目录:server/config/index.js 说明:如何获取这些配置,自己登录腾讯云

 "cos":{
    APPID:"*****",
    SecretId:"*****",
    SecretKey:"*****"
  }

至此为止简单的后台界面做完了,别的功能有待完善,相信大家看完之后也会自己写一些自己的功能了


上一篇-使用nuxt,express,mysql,nginx创建个人博客系列-15
下一篇-使用nuxt,express,mysql,nginx创建个人博客系列-17