Chu*_*ley 7 node.js express multer-s3
我有一个程序模型,并且该程序有一个图像属性,我在创建程序时使用 multers3 上传该属性。
我现在面临的挑战是,当我删除程序时,本地计算机上的所有内容都会被删除,但我意识到该文件(图像)仍然存在于我的 Aws s3 控制台上。如何在我的数据库和 Amazon s3 上删除该文件?
Here are my Program routes
这就是我删除程序的方法
router.delete("/:id/delete", function (req, res) {
const ObjectId = mongoose.Types.ObjectId;
let query = { _id: new ObjectId(req.params.id) };
Program.deleteOne(query, function (err) {
if (err) {
console.log(err);
}
res.send("Success");
});
});
Run Code Online (Sandbox Code Playgroud)
这就是我创建程序的方式。
router.post("/create", upload.single("cover"), async (req, res, next) => {
const fileName = req.file != null ? req.file.filename : null;
const program = new Program({
programtype: req.body.programtype,
title: req.body.title,
description: req.body.description,
programImage: req.file.location,
});
try {
console.log(program);
const programs = await program.save();
res.redirect("/programs");
} catch {
if (program.programImage != null) {
removeprogramImage(program.programImage);
}
res.render("programs/new");
}
});
Run Code Online (Sandbox Code Playgroud)
浏览 Multer-s3 存储库,我找不到任何提到从 s3 中删除的内容。源代码中有这个函数,但是我不知道如何使用它。
您可以尝试直接通过以下方式使用AWS SDK deleteObject:
const s3 = new aws.S3({
accessKeyId: 'access-key-id',
secretAccessKey: 'access-key',
Bucket: 'bucket-name',
});
s3.deleteObject({ Bucket: 'bucket-name', Key: 'image.jpg' }, (err, data) => {
console.error(err);
console.log(data);
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7663 次 |
| 最近记录: |