Как прекратить перенаправление при отправке формы, но все еще POST к действию URL с Multer? - PullRequest
0 голосов
/ 23 ноября 2018

Я использую 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);
      });

    }
  }
})

})

1 Ответ

0 голосов
/ 23 ноября 2018

Файл изображения успешно загружен, однако пользователь будет перенаправлен на «/ upload».

Перенаправление происходит, когда браузер запрашивает один URL, а сервер говорит: «Что вы хотите по этому другому URL, получите это вместо».

Вы не испытываетеперенаправления.action просто говорит браузеру отправить данные на /upload.


Я пытался настроить экспресс-маршрут для перенаправления пользователя на предыдущую страницу, но похоже,express не может получить маршрут, так как не выполняется ни одна из console.log ().

Ваш маршрут для get(), но у вас есть method="POST".

Для обработки запроса на запрос POST вам необходим обработчик post().Тот самый, который на самом деле обрабатывает отправку формы!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...