Главная / КОМПЬЮТЕРЫ / Программирование / Логика загрузки файлов на сервер: PHP, JavaScript и AJAX

Логика загрузки файлов на сервер: PHP, JavaScript и AJAX

Логика загрузки файлов на сервер: PHP, JavaScript и AJAX

Веб-ресурс — это «точка» в информационном пространстве всемирной сети. Информация, отображаемая на нем, обычно представлена статически, и посетитель ее просматривает. Можно указать ссылку на документ или иной ресурс и посетитель загрузит себе файл с информацией или перейдет по ссылке.

Для передачи информации на сервер или ее получения с него используются простые инструменты. Но их разумное применение и удобная логика использования не так просты, когда требуется организовать безопасную, стабильную и надежную обработку данных.

Загрузка файла

Сложилось простое представление: есть upload и download. Первое — отправить файл на сервер, второе — получить его. Для реализации первой задачи информацию можно просто вывести в браузер, в окошко на странице или предоставить ссылку на информационный ресурс. Для реализации второй задачи достаточно написать форму загрузки файла и код ее обработки на сервере.

Логика загрузки файлов на сервер: PHP, JavaScript и AJAX

В данном примере (1) — два варианта ссылки (без применения PHP) загрузки файлов с сервера, (2) — форма для передачи файлов на сервер. Здесь применение PHP принципиально. Используется более прогрессивная логика загрузки, чем обычно.

В общем случае достаточно написать в коде страницы приведенную форму и предусмотреть обработку массива $_FILES.

Логика загрузки файлов на сервер: PHP, JavaScript и AJAX

Проверка имени файла (функция scCheckFileName) не является обязательным условием, но для безопасности и надежности — это целесообразно делать. Определить правила для любого загружаемого файла — залог надежной работы веб-ресурса и уважительного отношения к нему со стороны посетителя.

Логика загрузки на сервер

Хостинг хостингу рознь, но использовать русские буквы и некоторые символы в именах файлов — чревато опасностью. Он может «записать» файл, но затем «не сможет» его прочитать или удалить. Чтобы избежать неопределенностей, лучше сразу файл переименовать и сохранить под таким именем, к которому адекватно отнесется любой хостинг.

В таком контексте загрузка файлов на сервер: PHP + MySQL. При помощи языка выполняется загрузка файла. Посредством базы данных устанавливается ассоциация между реальным именем файла и уникальным, которое формируется автоматически. Самое простое решение, как получить по реальному имени файла его MD5 код — это уникальная последовательность из 32 байт. Выполняя загрузку файлов на сервер, PHP «включается» на сервере через AJAX.

Логика загрузки файлов на сервер: PHP, JavaScript и AJAX

Здесь функция scfCheckFile() кодирует реальное имя файла, формирует по нему уникальный MD5 код и запускает механизм передачи данных через AJAX. В этот момент сервер не делает загрузку файла, а проверяет только его наличие по уникальному коду. Если такого файла не обнаружено, формируется новое имя файла, а в строку таблицы помещается запись о начале загрузки.

Функция scfGetFile() подтверждает факт загрузки файла и обеспечивает обновление записи о нем.

В результате: файл загружен, запись в таблице сформирована. Загрузка файлов на сервер на PHP & AJAX при помощи JavaScript — хорошее и надежное решение.

Механизм AJAX для загрузки файлов

Запуск передачи данных по AJAX инициируется функцией InitXML(). Выполнить загрузку файлов на сервер на PHP, JavaScript и AJAX предлагаемым кодом — безопасно и надежно.

Логика загрузки файлов на сервер: PHP, JavaScript и AJAX

Получение ответа от сервера исполняется функцией WaitReplySC(). Справа внизу приведены коды для двух ситуаций: проверка наличия файла перед загрузкой и собственно процедура загрузки.

Логика загрузки файлов на сервер: PHP, JavaScript и AJAX

Варианты кодирования могут быть иными, существенным является то, что кнопка загрузки файла не активна до того момента, как он не будет выбран и проверен сервером.

Логика загрузки файлов на сервер: PHP, JavaScript и AJAX

Серверный код на PHP

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

Для решения данной задачи проще всего завести таблицу в базе данных MySQL и отмечать там одной строчкой загрузку каждого файла. Здесь можно хранить реальное имя файла, его расширение, дату загрузки, вести учет операций над ним и пр.

Логика загрузки файлов на сервер: PHP, JavaScript и AJAX

Это код проверки наличия файла по его уникальному имени. Функция объекта базы данных $oBase NewViuq() определяет уникальное имя для загружаемого элемента и ставит его в соответствие реальному имени файла.

Логика загрузки файлов на сервер: PHP, JavaScript и AJAX

Если проверка имени была удачной, посетитель нажимает на кнопку загрузки и механизм AJAX инициирует загрузку файлов на сервер. PHP код корректирует запись в таблице MySQL и получается следующий результат:

Логика загрузки файлов на сервер: PHP, JavaScript и AJAX

В файловой системе появился еще один элемент, а строка таблицы этого файла получила окончательное содержание. Поле статуса (f_status) содержит символ «N», то есть операций над загруженным файлом еще не было.

Логика обмена данными

Повсеместное распространение файлов *docx, *.xlsx, *.pdf и архивов привели к формированию не совсем корректной концепции: HTML & PHP загрузка файлов с сервера — это ссылка на них. При этом вовсе не обязательно, что посетитель скачивает элемент. Часто программист просто открывает файл в браузере для просмотра.

Многие задачи сопряжены с изменением информации в таких файлах. Сотрудник компании, администрирующий сайт, проверяет комплект актуальных файлов, скачивает их, изменяет и отправляет обратно на сервер. Такая логика обуславливает существенный трафик, загружает каналы связи и делает трудоемкими как сопровождение веб-ресурса, так и работу с ним.

Разумеется, невозможно изменить сложившуюся систему информационных отношений в той или иной компании. Если приоритет предоставлен файловой организации, то следует ее оптимизировать. Если есть возможность трансформировать файлы в данные и работать с ними непосредственно, то идеальным будет вариант: загрузка, преобразование их в активную форму, которая допускает изменение контента по его элементам. Когда необходимо загрузить файл с сервера, он преобразуется в текущем актуализированном состоянии и направляется потребителю.

Оставить комментарий