03上传头像接口的实现

场景:用户在注册时可以上传头像

1、下载插件

npm i formidable@2.1.2

 2、封装上传函数

const formidable = require('formidable')
const path = require('path')
const form = formidable({
  multiples: true,
  // 设置上传文件的保存目录
  // uploadDir: path.resolve(__dirname + '/../public/images'),
  // 保持文件后缀
  keepExtensions: true,
})

async function uploadFile(folderName, req, res, next) {
  form.uploadDir = path.resolve(__dirname + `/../public/${folderName}`)
  return new Promise((resolve, reject) => {
    form.parse(req, (err, fields, files) => {
      if (err) {
        reject(next())
      } else {
        resolve(files)
      }
    })
  })
}

exports.uploadFile = uploadFile

3、编写上传接口

router.post('/uploadAvatar', async (req, res, next) => {
  try {
    const obj = await uploadFile('images', req, res, next)
    if (!obj) throw ''
    const { newFilename, originalFilename } = obj.file
    const imgUrl = `${PROTOCOL}://${HOSTNAME}:${PORT}/images/${newFilename}`
    imgModel.create({ imgName: originalFilename, newImgName: newFilename, imgUrl }).then(data => {
      res.json({
        code: 1,
        msg: '上传头像成功',
        data: {
          imgId: data._id,
          imgUrl: imgUrl,
        },
      })
    })
  } catch (error) {
    res.status(500).json({ code: -1, msg: '头像上传失败' })
  }
})

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

bbamx.

谢谢您

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

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

打赏作者

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

抵扣说明:

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

余额充值