Я установил multer, multer-s3 и aws -sdk и пытаюсь загрузить изображение профиля, когда пользователь загружает изображение профиля.
пока у меня есть приведенный ниже код в вызове файла file_upload . js
const aws = require('aws-sdk')
const multer = require('multer')
const multerS3 = require('multer-s3')
aws.config.update({
secretAccessKey: "my access key",
accessKeyId: "my key id",
region: "us-east-2"
})
const s3 = new aws.S3()
const upload = multer({
storage: multerS3({
s3: s3,
bucket: 'user-image1',
acl: 'public-read',
metadata: function (req, file, cb) {
cb(null, {fieldName: 'TESTING-META-DATA'});
},
key: function (req, file, cb) {
cb(null, Date.now().toString())
}
})
})
module.exports = upload
и запрос на публикацию, когда пользователь выбирает какой-либо ввод
const upload = require('../assets/file-upload')
const singleUpload = upload.single('image')
router.post("/edit/:id", (req, res) => {
User.findByIdAndUpdate(
{ _id: id },
{
$set: {
education: req.body.education,
language: req.body.language,
bio: req.body.bio,
image_file: req.body.image_file
},
},
{ new: true },
(err, result) => {
res.redirect("/dashboard");
}
);
});
в моем e js, все входные данные String обрабатывались правильно, когда пользователь вводил данные , кроме изображения.
<div class="upload-btn-img">
<input type="file" name="image_file" onchange="showThumbnail(this)" />
</div>
У меня вопрос, как я могу сохранить фотографию со всеми другими входными данными? все остальные входные данные хранятся в атласе mongodb, а изображения должны храниться в amazon s3. URL-адрес должен быть сохранен в атласе mongodb под полем с именем image_file.