Загрузка GIF при обработке PHP-формы

#php

#php

Вопрос:

У меня есть PHP-форма, которая включает файл, загружаемый при отправке. Поскольку я разрешаю использовать довольно большие файлы, страница часто может загружаться целую вечность.

Есть ли способ показать пользователю какую-либо анимацию загрузки?

Комментарии:

1. функция javascript, которая вставляет анимацию в DOM, привязанная к событию отправки формы.

Ответ №1:

Для использования моего кода вам понадобится jQuery, но оно того стоит:

Поместите этот тег script на свой сайт <head> :

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script>
  

Поместите скрытый загрузочный GIF куда-нибудь, где бы вы ни хотели его видеть

 <img id="loader" src="loading.gif" />
  

Скрыть его при загрузке страницы: $('#loader').hide();

Затем в Javascript (или, что еще лучше, jQuery), внутри вашей функции отправки … покажите / скройте это:

 function submit()
{
    $('#loader').show();
    // do your upload stuff
    $('#loader').hide();    
}
  

Комментарии:

1. Это хорошая идея при отправке простых данных, но как насчет отправки довольно большого файла? Как это работает в основных браузерах?

2. @Tadeck: PHP не является идеальной платформой для загрузки больших файлов. Если при загрузке есть какие-либо сбои, скорее всего, вся уже загруженная часть потеряна и не подлежит возобновлению. Но в остальном браузерам на самом деле все равно, составляет ли загружаемый файл 1 байт или 50 гигабайт — если браузер может получить доступ к файлу, его можно загрузить.

3. @Marc Я не понимаю вашего ответа. Конечно, PHP имеет много недостатков, и другие языки лучше, когда дело доходит до реализации определенных функций, но как это связано с моим вопросом о отправке введенных пользователем текстовых данных по сравнению с отправкой больших файлов? Дело было в том, что вы не можете отправлять файлы через AJAX, если вы не используете какой-либо Flash и т.д. Это не имеет ничего общего с серверной частью, и вы, вероятно, скроете вращающуюся кнопку (загрузчик) до того, как пользователь загрузит файл. Это слабость вышеупомянутого решения, а не PHP.

Ответ №2:

Я бы поместил скрытое изображение где-нибудь на странице. Вызовите функцию javascript при отправке формы и позвольте этой функции отобразить изображение перед отправкой формы.