используйте amazon s3 для загрузки изображения, когда в форме есть несколько входов - PullRequest
0 голосов
/ 02 мая 2020

Я установил 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.

...