Логиката на качване на файлове на сървъра: php, javascript и ajax

Уеб ресурсът е "точка" в мрежата от информация. Информацията, която се показва на него, обикновено е статично представена и посетителят я разглежда. Можете да предоставите връзка към документ или друг ресурс и посетителят ще изтегли файла с информацията или ще последва връзката.

Използват се прости инструменти за изпращане на информация към или получаване на информация от сървъра. Но тяхната интелигентна употреба и логика на използване не са толкова лесни, когато става въпрос за организиране на сигурна, стабилна и надеждна обработка на данни.

Изтегляне на файл

Има една проста идея: има качване и изтегляне. Първата е за изпращане на файла към сървъра, а втората - за получаването му. За да се постигне първото, информацията може просто да се покаже в браузъра, в поле на страницата или чрез предоставяне на връзка към информационен ресурс. За втората задача е достатъчно да се напише форма за качване на файлове и код за нейната обработка на сървъра.

Прости инструменти за качване

В този пример (1) - две опции за връзка (без използване на PHP) за качване на файлове от сървъра, (2) - форма за изпращане на файлове към сървъра. Тук използването на PHP е от съществено значение. Използва по-усъвършенствана логика за изтегляне от обичайната.

В общия случай е достатъчно да се запише горната форма в кода на страницата и да се предвиди обработка на масива $_FILES.

Записване на качения файл

Проверката на името на файла (функцията scCheckFileName) не е задължително условие, но за сигурност и надеждност е препоръчително. Дефинирайте правила за на всеки изтеглен файл е ключът към надеждна работа Уеб ресурс и уважително отношение към посетителя.

Качване на логиката на сървъра

Хостингът не е същият като хостинг, но използването на руски букви и някои знаци в имената на файловете - е изпълнено с опасност. Той може да "запише" файл, но след това да не успее да го прочете или изтрие. За да избегнете двусмислие, най-добре е да преименувате файла и да го запишете с име, което всеки хостер ще приеме с готовност.

В този контекст, качване на файлове на сървъра: PHP + MySQL. Езикът се използва за качване на файл. Връзката между реалните и уникалните имена на файловете се задава чрез базата данни и се генерира автоматично. Най-простото решение, как да извличате истинското име на файла, неговият код MD5 е уникална последователност от 32 байта. Когато се извършва качване на файлове на сървъра, PHP се "активира" на сървъра чрез AJAX.

Стартиране на PHP чрез AJAX

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

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

Резултат: файлът е зареден, записът в таблицата е генериран. Качване на файлове на сървъра с PHP & AJAX с JavaScript - добро и надеждно решение.

Механизмът AJAX за изтегляне на файлове

Функцията initXML() инициира прехвърляне на данни чрез AJAX. Изпълнявайте PHP, JavaScript и AJAX за качване на файлове на сървъра с предложения код - безопасно и сигурно.

Стартира AJAX

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

Отговаряне на AJAX сървър

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

Логика на качване

Сървърен код в PHP

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

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

Код на сървъра за проверка на името на файла

Това е код за проверка на съществуването на даден файл по неговото уникално име. Функцията на обекта на базата данни $oBase NewViuq() дефинира уникално име за качения елемент и го поставя в съответствие с истинското име на файла.

Код на сървъра за изтегляне на файл

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

Резултат от изтеглянето на файла

Във файловата система се появи още един елемент и редът на таблицата на този файл беше завършен. Полето за статус (f_status) съдържа "N", т.е. все още не са извършени никакви операции с качения файл.

Комуникационна логика

Файловете *docx, *docx са широко разпространени.xlsx, *.pdf и архиви са довели до една не съвсем правилна концепция: HTML & PHP, който изтегля файлове от сървър, е връзка към тях. Това не означава непременно, че посетителят изтегля елемент. Често програмистът просто отваря файла в браузър, за да го види.

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

Разбира се, невъзможно е да се промени установената система на информационни отношения в дадена компания. Ако организацията на файловете е приоритетна, тя трябва да бъде оптимизирана. Ако има възможността да трансформирате файловете в данни и да работите директно с тях, тогава идеалният вариант би бил: качване, преобразуване в активна форма, която ви позволява да променяте съдържанието на нейните елементи. Когато даден файл трябва да бъде изтеглен от сървъра, той се преобразува в текущото си актуализирано състояние и се изпраща на потребителя.

Статии по темата