Я пытаюсь справиться с отличным сервисом под названием 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
весь путь без имени сегмента.Прекрасное объяснение здесь .Спасибо всем.