Вставка нескольких изображений и возврат назад по кнопке браузера
Нажимаю "Добавить еще изображение", выбираю файл - и так три раза подряд. Потом нажимаю кнопку "Загрузить". Все нармально.
Теперь пытаюсь вернуться назад, нажимаю кнопку браузера назад. И вот проблема, надо повторно опять добавлять изображения. Т.е. вернуться назад по кнопе браузера не получается. :cray: Как решить это? Подскажите пожалуйста (код ниже). Это глюк браузера (opera) или не совсем правильный код? <?php // // JavaScript. // echo '<script> function insert() { var newspan = document.createElement("span"); str = \'<table width="100%" style="margin-top: 2px; margin-bottom: 2px;" align="left" cellspacing="0" cellpadding="0" border="0">\'; str += \'<tr>\'; str += \'<td>\'; str += \'<input type="file" size="70" name="download_image[]">\'; str += \'</td>\'; str += \'</tr>\'; str += \'</table>\'; newspan.innerHTML = str; list.appendChild(newspan); } </script>'; // Форма. echo '<form method="post" enctype="multipart/form-data" name="file_edit_form" action="http://127.0.0.1/index.php?action=qwerty">'; echo '<div id="list">'; // Вставить сюда. echo '</div>'; echo '<a onclick="insert();">'; echo 'Добавить еще изображение'; echo '</a>'; echo '<br>'; echo '<input type="submit" value="Загрузить" name="submit_form" />'; echo '</form>'; ?> |
Цитата:
|
Вложений: 1
Цитата:
Когда вставляешь 10-ть изображений 640x480, а одно изображение не 640х480 - а больше. Выводится сообщение о ошибке и кнопка вернуться назад: echo '<a href="javascript:history.back()">Назад</a>'; Возврат назад происходит, но изображения приходиться вставлять заново. Для пользователя это не очень удобно. Эти кусочки кода из моего пректа. Посоветуйте, как, что (хочу, чтобы пользователю было удобно)... Если кому интересно. Код с ограничением по количеству вставляемых изображений, здесь (как делал я): http://forum.php.su/topic.php?forum=60&topic=6879 |
А вот так. Поле file поле особое, это в textarea браузер может подставить ранее введенный текст, а в поле file нет, у него свойство value между прочим и то только для чтения.
Сбрасывайте то поле (если их несколько), в которое выбрано не удовлетворяющее условию, или отправляйте Ajax только те, что отвечают условию, если поле multiple, или распределяйте обязанности между клиентом и сервером, серверу ведь все равно проверять это вновь, если ошибки, то те, что ОК запомнить временно, вернуть ошибку, как все ОК, в каталог. Заставить браузер поступать так как вы хотите - забудьте. |
У меня форма, а там есть кнопка отправить, после нажатия на кнопку выполняется другой файл php (action). А получится сделать так! Нажимаем на кнопку отправить, вызывается js и проверяет $_FILES, если ок, выполняется другой файл php. Иначе показать окно alert.
П.С. Блин, не складываютcя другие моменты - не подходит такой вариант. Просто, для интереса, с кнопкой отправить, можно сделать изврат? |
Цитата:
Цитата:
Кроме варианта сервер->клиент (а сервер просто обязан проверять, пофигу что там было на клиенте), я еще говорил о двух чисто клиентских решениях, в зависимости от того, что за поле/поля у формы. Цитата:
|
Блин. :stop: Сдаюсь.
Я не знаю возможностей JS, поэтому возникают куча проблем, как можно, а как нельзя. Я наверное откажусь от js, а вставку изображений напишу полностью на PHP, плюс там нет этой проблемы с возвратом назад. Хотел как лучше, а получилось как всегда. :thanks: Сделаю так (вставить изображений можно 7, и пепец...): for ($x=0; $x<7; $x++) { echo '<input type="file" size="75" name="download[]" title="' . $txt['text_files_info'] . '">'; } Если есть другие варианты - напишите их здесь. Наверное, тема закрывается... |
Цитата:
|
Цитата:
Все ожидал, но это Цитата:
П.С. Попробывал JS+PHP - не получилось (проблема с возвратом назад), вернулся полностью на PHP (не совсем удобно)... Если есть возможность, предложите свой вариант js+php для загрузки изображений (файлов) на сервер (клиентская часть). Пример бы на js+php... |
Если Пример бы на js+php, то Ajax, я говорил об этом.
|
Цитата:
Вот нашел (Ajax для новичков): https://habrahabr.ru/post/14246/ :blink: Жаль, жаль, за чтобы зацепиться (примеры бы JS+PHP). |
Цитата:
К примеру - что делать, если пользователь отправляет свои фото, в также другую информацию на сервер, которая будет добавлена в базу, а значит только после добавления получит уникальный идентификатор, или проверив ошибки ввода сервер возвращает их пользователю, а фото загружены без ошибок? Если загруженные документы нужно связать с добавляемой записью, то нужно сперва добавить запись, получить ID, затем уже заниматься документами, а значит документы где-то должны быть временно храниться. Можно конечно их перенести в какой-то свой временный каталог, но возникает вторая проблема - следить за мусором. Загружать фото заново при ошибках, это опять затраты времени, значит и в этом случае где-то надо временно хранить фото. Если есть ошибки при загрузке изображений, но не всех, можно принять те, что загружены удачно, сообщив об этом пользователю, а те что с ошибками предложить загрузку заново. Сервер с успехом может хранить документы временно в сессии, плюс в этом в том, что в случаях когда пользователь покинул страницу, не закончив все операции, весь мусор удалит сборщик мусора, при этом при Ajax продлевать время жизни сессии не составит труда, а значит и не пропадет уже загруженное. То есть этот сценарий в любом случае должен присутствовать вне зависимости от того проверяет ли клиент условия загрузки. На клиенте же можно также проверять условия, например, в случае если выбранное изображение не соответствует условию, то можно этому полю ввода (индексу в коллекции, если поле с мульти выбром) присвоить метку. А оправляя форму на сервер помещать в FormData() только те изображения, которые не имеют меток "плохой". Это к тому, чтобы рыская по переходом, не выбирать заново файлы, но только учтите - выбор файла и его загрузка на сервер, это все таки разные понятия. Но никакими кнопками и извратами вы не заставите браузер атоматом загружать то, что ранее выбиралось в форме. |
Смотрел еще SMF (Simple Machines Forum: www.simplemachines.org), организацию загрузки пользователем файлов на сервер. Ну что сказать... Добавить еще файл, добавить еще файл - JavaScript. При добавление скажем 10-ти файлов, если один не отвечает условиям - предется заново добавлять все 10-ть файлов.
Тему можно закрыть, а правильно - тему в сторону. Ajax - тоже пока в сторону. laimas! Если можно, емаил ваш мне в личку и ваше имя (потом разберемся). Спасибо. Спасибо также пиплам с www.simplemachines.ru (GeorgG, digger, огненная ALINA и др.) |
Цитата:
Цитата:
|
Всего доброго. :)
|
Часовой пояс GMT +3, время: 02:01. |