Я использую Multer для загрузки изображений в файловую систему сервера, и в учебном пособии, которому я следовал, предлагалось настроить HTML-форму следующим образом:
<form action="/upload" id="myForm" name="myForm" enctype="multipart/form-data" method="post">
<input id="myFile" name="myFile" type="file">
<button type="submit" class="btn btn-primary">Submit</button>
</form>
Файл изображения успешно загружен, однако пользователь будетбыть перенаправлен на "/ Upload".Из того, что я исследовал, Ajax не может обрабатывать загрузки изображений, и Малтеру все равно нужен атрибут enctype="multipart/form-data"
.
Я пытался настроить экспресс-маршрут для перенаправления пользователя на предыдущую страницу, но это похоже на экспрессне могу получить маршрут, так как ни один из console.log () не выполняется.Вот код, который у меня был для этого:
app.get("/upload", function(req, res){
backURL = req.header('Referer') || '/';
// need to display "Profile image updated!"
console.log(backURL);
console.log("none");
res.redirect(backURL);
})
Есть ли какой-нибудь способ остановить перенаправление, все еще POST для / загрузки?
РЕДАКТИРОВАТЬ: я забыл упомянуть, что я также используюэкспресс для публикации для отправки данных в / upload:
app.post('/upload', function (req, res) {
upload(req, res, (err) => {
if (err) {
console.log("problem at api-routes line 88")
res.render('index', {
msg: err
});
} else {
if(req.file == undefined){
res.render('index', {
msg: 'Error: No File Selected!'
});
} else {
db.User.update({
profileImg: req.file.filename
},{
where: {
id: req.user.id
}
}).then(function (dbPost) {
//res.json(dbPost);
res.render('index', {
msg: 'File Uploaded!',
file: `uploads/${req.file.filename}`
});
}).catch(function (err) {
console.log(err);
res.status(422).json(err.errors[0].message);
});
}
}
})
})