我需要來自 AWS s3 的影像的 URL 位置,并使用 mongoose 將其存盤在 MongoDB 中。此時,當我控制臺日志時, req.file.location 值未定義。我也試過控制臺日志上傳檔案,在這里我得到了正確的位置......但是我如何在我的新繩索影像中獲取它?
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
產品.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);
}
});
uj5u.com熱心網友回復:
好像你放錯了 uploadFile 行。您需要先上傳檔案,然后獲取 url 并將其放入Rope有效負載
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);
}
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/361056.html
