ПредишенСледващото

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

По време на разработването на проекта, стана проблемът за изпращане от сайта "А" на място "Б" архивен файл, който след това е необходимо, за да отворите сайта на "В". Освен това, файлът трябва "А" се генерира динамично на сайта. и отидете на линия от PHP-скрипт без участието на всички форми и т.н.

Аз решен този проблем по два начина, и аз искам да ги споделя с вас.

№1 Метод: метод POST да изпратите файла

Идеята е, че на сайта "А", образуван от POST-търсене, което само по себе си съдържа името и съдържанието на който искате да прехвърлите файла, и се изпраща на "Б" сайта. Сайтът "Б" СЛЕД е получено искането и писмено да даден файл е посочено съдържанието.

Трансфер на технологии СЛЕД искане на PHP-скрипт, сложих гнезда.

За да се предават данни по пощата, необходимо за образуване на низ, съдържащ заглавието искане и самите данни директно.

Типичната форма на низове, се изпраща на сървъра може да бъде:

Както можете да видите, променливите в СЛЕД искането не е зададено като в самото искане, което е var1 = val1var2 = VAL2

След отваряне на гнездо при използване fsockopen (функция). където параметри се предава на името на домейна, който преминава на искането, номера на порта, променлива, която съдържа номер на предаване грешка (ако има такъв, е), променлива, съдържаща описание на грешката (ако е), както и затварянето на контакта, когато не е в употреба (в секунди):

Ние даваме доказателства в открит контакт и прочете отговор "Б" сървър.

В резултат на сценария от сайта "А" върви СЛЕД търсене в сайта "В". а именно import.php скрипт. "В", разположен в основата на сайта. Т.е. import.php стартирате скрипта. където сценарият ще бъде на разположение масив $ _POST. съдържащ променлива име и съдържание.

Всичко, от което се нуждаете е да се отвори за писане на файл с име $ _POST [ 'име']. и ни пишете на данни от една променлива $ _POST [ 'съдържание'].

Всичко! Файл получи и се съхранява!

Но има едно нещо: файлът се прехвърля може да бъде всякакъв вид. И двоичен и текст. Както можете да видите съдържанието на файла се предава на POST-заявката като var1 = val1var2 = VAL2. т.е. ако <здесь содержимое файла file.zip> да бъде двоичен, или да съдържа URL-значителен герои, а след това на целостта на предава досието могат да бъдат счупени, или файлът не се прехвърля на всички!

За да избегнете това, съдържанието на файла, преди да изпратите е необходимо да се преобразува URL-неактивна форма. Това може да стане с помощта на base64_encode (функция).

и има променлива file_content $ вмъква в СЛЕД търсене:

В този случай, съдържанието на файла, ще бъдат прехвърлени в "безопасна" състояние.

Рецепция и "декодиране" на съдържанието на файл в "Б" сайтът може да бъде постигнато чрез base64_decode () функция.

Трябва да се отбележи, че този метод работи добре за сравнително малки файлове (около 2 мегабайта, за получаване на по-точна стойност необходимо да се разгледа на максималните настройки на PHP сумата, получена метод POST данни).

Точно когато се сблъскват с ограничение на размера на качените файлове, по метода на прехвърляне на файлове.

№2 метод: изпращане на файлове с помощта на PUT

Както бе споменато по-рано, изпращане на файлове на отдалечен сървър, използвайки метода на POST чрез контакти е добре за малки размери на файла. За прехвърляне на големи файлове, трябва да използвате метод трансфер вкара.

За да направите това, използвайте набръчкването на библиотека.

СЛОЖИ метод за прехвърляне на файл, ние трябва да се инициализира CURL сесия, определена за сесия изисква параметри, изпълнява CURL искане и затвори сесията.

Следващият пример демонстрира прехвърлянето на "Б" file.zip файлов сървър.

След изпълнението на този скрипт от сайта "А" на място "Б" отива PUT-искане, което ще видите съдържанието на предаваната файла и в самото искане ще съдържа името на файла, за да се предава.

На следващо място, ние трябва да се организира един сайт за прехвърляне на файлове "Б".

За тази цел скрипт import.php на. "В" на интернет страницата. от $ _GET масива, ние трябва да се името на файла, както и от входния поток - Съдържание на файла:

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

вероятно Също така трябва да се спомене, че две метод за прехвърляне на файлове от горните не е единственият възможен начин. Например, можете да прехвърляте файлове от PHP скриптове за дистанционно протокол FTP-сървър (като се използва същият PHP Curl или специални функции като ftp_connect (), ftp_login (), ftp_put () и т.н.). Но достъпът до сайта на FTP може да бъде трудно (не е известно име и парола, или ако не са променени на сървъра, но не се е променило в скриптове и т.н.). Един от начините да се уточни тук ще работи правилно на всички видове уеб хостинг (може би с изключение, че някои от безплатен хостинг, който е забранено да се получават данни от други сайтове).

Подкрепете проекта - споделете линка, благодаря!