【问题标题】:How to get image url location from Aws s3 and store it in mongodb如何从 Aws s3 获取图像 url 位置并将其存储在 mongodb
【发布时间】:2021-12-29 19:08:18
【问题描述】:

我需要来自 AWS s3 的图像的 URL 位置,并将其与 mongoose 一起存储在 MongoDB 中。 此时,当我控制台日志时, req.file.location 值未定义。我也尝试过控制台日志uploadFile,在这里我得到了正确的位置......但是我怎样才能在我的新绳索图像中获取它?

S3.js:

require('dotenv').config()
const fs = require('fs')
const S3 = require('aws-sdk/clients/s3')


const bucketName = process.env.AWS_BUCKET_NAME
const region = process.env.AWS_BUCKET_REGION
const accessKeyId = process.env.AWS_ACCESS_KEY
const secretAccessKey = process.env.AWS_SECRET_KEY


const s3 = new S3({
    region,
    accessKeyId,
    secretAccessKey
})

function uploadFile(file){
    const fileStream = fs.createReadStream(file.path)

    const uploadParams = {
        Bucket:bucketName,
        Body:fileStream,
        Key: `image-${Date.now()}.jpeg`
    }

    return s3.upload(uploadParams).promise()
}

exports.uploadFile = uploadFile

product.vue:

const upload = multer({
  dest:'uploads/'
})

const {uploadFile} = require('../s3')


router.post('/', upload.single('image'), async (req, res) => {

    console.log(req.file.location)
    const rope = new Rope({
        title: req.body.title,
        description: req.body.description,
        image: req.file.location,
        price: req.body.price,
        cartQuantity: req.body.cartQuantity,

    });
    try {
        await uploadFile(req.file)
        await rope.save();
        res.status(201).json(rope);
        console.log(req.body)
    } catch (err) {
        res.status(400).send(err);
    }
});

【问题讨论】:

    标签: node.js mongodb vue.js amazon-s3


    【解决方案1】:

    好像你放错了 uploadFile 行。 你需要先上传文件,然后获取url并放到Ropepayload

    router.post('/', upload.single('image'), async (req, res) => {
    
    const fileUploaded = await uploadFile(req.file)
    const { Location } = fileUpload
    const rope = new Rope({
        title: req.body.title,
        description: req.body.description,
        image: Location,
        price: req.body.price,
        cartQuantity: req.body.cartQuantity,
    
    });
      try {
        await rope.save();
        res.status(201).json(rope);
        console.log(req.body)
      } catch (err) {
        res.status(400).send(err);
      }
    });
    

    【讨论】:

      猜你喜欢
      • 2020-10-31
      • 1970-01-01
      • 2019-11-25
      • 1970-01-01
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 2020-12-04
      • 1970-01-01
      相关资源
      最近更新 更多