回调函数取值

外面有个upimg方法

qn.upImg = (temporaryImg) => {
  let config = new qiniu.conf.Config()
  config.zone = qiniu.zone.Zone_z2 //  空间对应机房
  let formUploader = new qiniu.form_up.FormUploader(config) //  生成表单上传的类
  let putExtra = new qiniu.form_up.PutExtra() //  生成表单提交额外参数
  let localFile = '/Users/zzz/Desktop/mac/unit/moon/' + temporaryImg
  let key = temporaryImg //  重命名文件
  /**
   * 上传本地文件
   * @param uploadToken 上传凭证
   * @param key 目标文件名
   * @param localFile 本地文件路径
   * @param putExtra 额外选项
   * @param callback
   */
  return new Promise ((resolve, reject) => {
    formUploader.putFile(uploadToken, key, localFile, putExtra, function (respErr, respBody, respInfo) {
      console.log('respErr : ' + respErr, 'respBody : ' + JSON.stringify(respBody), 'respInfo' + JSON.stringify(respInfo))
      if (respErr) {
        reject(JSON.stringify(respErr))
      }
      if (respInfo.statusCode == 200) {
        resolve(JSON.stringify(respBody))
      } else {
        resolve(JSON.stringify(respBody))
      }
    })
  })
}

这里是接口

router.post('/upload', async (ctx, next) => {
  let temporaryImg = new Date().getTime() + '.jpeg'
  //  fs.writeFileSync 还有一个这个方法,说是同步方法
  fs.writeFile(temporaryImg, dbuff, function (err) {
    if (err) {

    } else {
      //  想在这里调用qn.Img方法, 但是怎么都不成功
    }
  })
  //  这样调用可以返回值给前端, 但是有问题。
  await qn.upImg(temporaryImg).then(res => {
    ctx.response.body = {
      msg: '操作成功',
      data: res,
      code: 200
    }
  })
})

想在写入文件成功之后进行文件的上传操作,请问应该怎么写啊?

阅读 1.6k
1 个回答

可以这样试一下

router.post('/upload', async (ctx, next) => {
  let temporaryImg = new Date().getTime() + '.jpeg'
  
  var p = function() {
    return new Promise((resolve, reject) => {
      fs.writeFile(temporaryImg, dbuff, function (err) {
        if (err) {
          reject(err)
        } else {
          resolve()
        }
      })
    })
  }
  
  await p()

  await qn.upImg(temporaryImg).then(res => {
    ctx.response.body = {
      msg: '操作成功',
      data: res,
      code: 200
    }
  })
})
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题