仅在刷新页面后才能将图像上传到AWS S3

时间:2019-07-18 10:46:44

标签: node.js amazon-s3

提交表格时,我正在上传图像aws s3。但是此图像在页面重新加载后不会显示。但是,如果我刷新一下,图像就在那里。

我正在使用async等待来等待s3上传完成,然后转到下一个这样的中间件:

  ...
  await s3.upload(params, function (err, data) {
    if (err) {
      console.log('%%%%%%%%%%%%%%% error in callback');
      console.log(err);
    }
    console.log('****************** success');
    console.log(data);
  });

  next()

在将图像上传到s3之前,我使用sharp库调整了图像的大小,但是我认为这与问题无关:

exports.resize = async (req, res, next) => {
  // check if there is no new file to resize
  if (!req.file) {
    next(); // skip to the next middlewaree
    return;
  }
  const extension = req.file.mimetype.split('/')[1]
  req.body.photo = `${uuid.v4()}.${extension}`

  let readyimg
  const imageAws = await sharp(req.file.buffer)
    .resize(800, 800)
    .toBuffer()
    .then( data => {
      readyimg = data
    })

  AWS.config.update({
    secretAccessKey: process.env.SECRETACCESSKEY,
    accessKeyId: process.env.ACCESSKEYID,
    region: 'us-east-1'
  })

  const s3 = new AWS.S3()

  const params = {
    Bucket: 'jamsession-images',
    Key: req.body.photo,
    Body: readyimg
  };

  await s3.upload(params, function (err, data) {
    if (err) {
      console.log(err);
    }
    console.log(data);
  });

  next()
};

我确实记录了数据,因为s3上传成功完成,然后转到下一个中​​间件并刷新了页面,但是未显示图像,只有在我重新加载页面后,它才显示图像任何想法是问题吗?

0 个答案:

没有答案