Синатра выполнить код перед загрузкой - PullRequest
0 голосов
/ 04 февраля 2012

На моей странице есть простая форма HTML, которая выглядит следующим образом:

<form action="/" method="post" enctype="multipart/form-data">
    <input type="file" name="file" />
    <input type="input" name="pin" />
    <input type="submit" value="Upload" />
</form>

Теперь я пытаюсь выполнить (с помощью Sinatra) проверку правильности введенного в поле формы кода PIN:

post "/" do
    if params[:pin] == "1234"
        start_upload()
    else
        print_error_message()
    end
end

Конечно, я хочу проверить ПИН-код до начала загрузки файла. Но это моя проблема. Сразу после нажатия кнопки «Загрузить» загрузка файла начинается до его завершения. Затем скрипт проверяет, действителен ли PIN-код.

Есть ли способ сделать что-то до начала загрузки файла? А если нет, то какие еще способы сделать это?

1 Ответ

1 голос
/ 04 февраля 2012

Если вы не используете Ajax и не разделяете запрос, это не сработает. У вас может быть две формы, одна из которых содержит пин-код и авторизует пользователя. Как только вы введете правильный пин-код, вы отправите асинхронный запрос на сервер, который ответит положительным или отрицательным ответом. В зависимости от ответа некоторые javascript активируют кнопку загрузки файла, чтобы вы могли начать загрузку файла. Вы также должны настроить сеанс для пользователя, чтобы только авторизованный пользователь (через пин-код) мог отправлять форму. Если вы проверяете файл Sinatra Readme, вы можете найти некоторую информацию о том, как это сделать.

Это было бы моим решением.

...