我试图处理一项出色的服务,即Digital Ocean中的Space。 Here是有关上传文件的很好的解释,但仅涉及GET请求,而与DELETE无关。也许有人在Node JS上拥有S3和Digital Ocean Space的使用经验?
使用本地服务器,我在Space的设置中发现可以提供“ Origin”和“ Allowed Methods” GET的“ Advanced CORS Options”。 但是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通过本地主机删除和上传文件,那应该很棒。
谢谢。
更新:
Mistake在这里:s3.deleteObjects
,必须使用s3.deleteObject
,是的,必须在Key
中使用没有存储桶名称的整个路径。
完美说明here。谢谢大家。