这时我觉得我的代码是完整的科学怪人,但我确实想知道为什么这个公式不起作用。
文件上传后,我可以使用req.file.path访问该路径,因此我尝试将其插入Sharp,但是什么也没有发生。我没有收到任何错误或预期的结果。 (我正在使用.rotate()使它在测试中更加明显)
var storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, 'public/uploads')
},
filename: function(req, file, cb) {
cb(null, file.fieldname + '-' + Date.now() + path.extname(file.originalname))
}
});
var upload = multer({
storage: storage
});
router.post("/new", upload.single('image'), function(req, res) {
sharp(req.file.path).rotate();
var post = {
title: req.body.title,
image: uploadedImage,
description: req.body.description,
body: req.body.body
}
Blog.create(post, function(err, newPost) {
if (err) {
console.log(err);
res.redirect("/")
} else {
res.redirect("/");
}
});
});
答案 0 :(得分:0)
您需要使用async/await
或Promises,因为对sharp
的调用是异步的。您还需要对修改/旋转后的文件执行某些操作,例如将其复制到Buffer
或保存到File
。请参阅文档中的these examples。
// use an async function
router.post("/new", upload.single('image'), async function(req, res) {
await sharp(req.file.path).rotate().toFile('/path/to/file');
// ... rest of your code
});