Произошла ошибка при выполнении sampleFile
.Другие части кода должны ждать, пока sampleFile
не закончится.Таким образом, у вас есть две ошибки: "errno":-2,"code":"ENOENT","syscall":"open","path":"./public/img/paomel/paomel-q6zynjrg8w45y.jpg"
(потому что он не может найти файл) и вторая Cannot set headers after they are sent to the client...
(потому что ваш код не обрабатывает ошибку и следует до окончательного return res.json(candy);
Try:
async store(req, res) {
let candy= req.body.candy;
let name= uniqid(doce+'-')+'.jpg';
let route= `/img/${doce}/`;
let theme= req.body.theme;
let sampleFile = req.files.arquivo;
sampleFile.mv(`./public${route}${name}`, async function(err) {
if (err) {
res.send(err)
} else {
const candy = await Candy.create({
name: name,
candy: candy,
route: route,
theme: theme
});
res.json(candy);
}
});
}
Вы также можете использовать then
, без async
и await
:
store(req, res) {
let candy= req.body.candy;
let name= uniqid(doce+'-')+'.jpg';
let route= `/img/${doce}/`;
let theme= req.body.theme;
let sampleFile = req.files.arquivo;
sampleFile.mv(`./public${route}${name}`, function(err) {
if (err) {
res.send(err)
} else {
Candy.create({
name: name,
candy: candy,
route: route,
theme: theme
})
.then(function(candy) {
res.json(candy);
})
.catch(function(err) {
console.log(err);
});
}
});
}
Попробуйте использовать абсолютный путь здесь /public${route}${name}
для загрузки файла, поскольку пакет fileupload не использует относительные пути.