Я новичок как в Express.js, так и в StackOverflow;Извините, если это дублирующий вопрос.Я проверил, но не увидел ничего релевантного.
Итак, я использую Multer + Express, чтобы позволить пользователю загружать изображение, которое будет называться '${username}.{extension}'
, на серверную часть / uploads/ папка.Я не хочу, чтобы пользователи могли сохранять более одного изображения на сервере (т. Е. Не "user1.jpg" и "user1.png").Для этого я написал следующее промежуточное программное обеспечение:
function deleteUserImage(req){
const acceptedExtensions = ['.png', '.jpg', '.jpeg', '.tif', '.tiff', '.JPG', '.bmp'];
acceptedExtensions.forEach(char => {
if(fs.existsSync(`./uploads/${req.cookies.username+char}`)){
fs.unlinkSync(`./uploads/${req.cookies.username+char}`);
}
})
}
Затем я смог получить необходимую функциональность по следующим маршрутам:
app.post('/process_upload-image', (req, res, next) => { //User sends post req w/ image file
deleteUserImage(req) //images for that user are cleared.
next();
})
app.post('/process_upload-image', upload.single('user-image'), (req, res, next) => {
res.redirect('/welcome'); //user is redirected after multer uploads the image.
})
Мне было интересно, было ли это лучше-практикует, однако, так как в итоге вы получаете два маршрута, прослушивающих один и тот же URI?Есть ли способ передать req в deleteUserImage (), а затем вызвать upload.single () ... все по одному маршруту?
Спасибо!