【发布时间】: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