Уже спрашиваю этот вопрос второй или третий раз)
Делаю приложение, которое должно принимать изображение и сжимать его. Для загрузки использую multer а для сжатия - хотел бы imagemin.
Вот к примеру, я тут загружаю и потом вывожу кратинку эту get-параметром
router.post('/upload', (request, response) => {
upload(request, response, (error) => {
if(error) {
request.flash('error_message', 'Only images are allowed')
response.redirect('/')
}
else {
if(request.file == undefined) {
request.flash('error_message', 'Image file was not been selected.')
response.redirect('/')
console.log(request.file)
}
else {
request.flash('success_message', 'Image was uploaded successfully.')
response.redirect(`/${request.file.filename}`);
console.log(request.file)
}
}
})
})
router.get('/:filename', (request, response) => {
let fileName = request.params.filename
let pathToCheck = path.join(__dirname, '../public/uploads/' + fileName)
if (fs.existsSync(pathToCheck)) {
let imageDestination = `${request.protocol}://${request.headers.host}/uploads/${fileName}`;
response.render('compress', {
userImage: imageDestination
})
}
else {
response.send('Oops.')
}
})
После чего я хочу ЭТУ картинку которая была загруженна через post "upload" или же которая отображается в get "/:filename" была сжатой:
router.post('/compress/:filename', async (request, response) => {
const compressedImage = await imagemin([request.params.filename], {
destination: 'compressed',
plugins: [
imageminMozjpeg(),
imageminJpegtran(),
imageminPngquant(),
imageminOptipng(),
imageminGiflossy(),
imageminGifsicle(),
imageminSvgo(),
imageminWebp()
]
})
request.flash('success_message', 'Image was compressed successfully. Now it is ready to be downloaded.')
response.redirect('result')
})
Но получаю в ответ "Cannot POST /compress/".