Как сделать удаление папки или файла через запросы s3 в пространстве digitalocean - PullRequest
0 голосов
/ 29 января 2019

Я пытаюсь справиться с отличным сервисом под названием Space in Digital Ocean. Здесь - довольно приятное объяснение о загрузке файлов, но оно касается только запроса GET и ничего о DELETE.Может быть, у кого-то есть опыт работы с S3 вместе с Digital Ocean Space на узле JS?

Используя сервер localhost, я обнаружил в настройках Space, что «Дополнительные параметры CORS» вы можете предоставить «Origin» и только «Allowed Methods»ПОЛУЧИТЬ.Но PUT, DELETE, POST, HEAD отключены.

Вот что я пытаюсь сделать:

export default {
  upload: (req, res) => {
    const storage = multerS3({
      s3,
      bucket,
      contentType: multerS3.AUTO_CONTENT_TYPE,
      acl: 'public-read',
      key: function(req, file, callback) {
        const { email } = req.user;

        callback(null, email + '/' + file.originalName);
      },
    });

    const upload = multer({ storage }).array('upload', 3);

    upload(req, res, err => {
      if (err) {
        return res.status(422).send({
          errors: [{ title: 'Image Upload Error', detail: err.message }],
        });
      } else {
        console.log('Success upload file');
      }
      res.end();
    });
  },

  delete: (req, res) => {
    const params = { Bucket: bucket, Key: 'some-folder-name-here' };
    s3.deleteObjects(params, function(err, data) {
      if (err) {
        return res.send({ error: err });
      }
      res.send({ data });
    });
  }
}

На самом деле было бы здорово, если бы можно было удалять и загружать файлы через мой локальный хостиспользуя простой s3 api.

Спасибо.

ОБНОВЛЕНИЕ:

Ошибка была здесь: s3.deleteObjects, нужно использовать s3.deleteObject, и да, нужно использовать вKey весь путь без имени сегмента.Прекрасное объяснение здесь .Спасибо всем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...