Intr-o zi ma intreba cineva pe messenger cum sa uploadeze un fisier la el pe server cu ajutorul unui formular HTML si cu ajutorul PHP-ului. Metoda este cat se poate de simpla⦠Tagul <form></form> are urmatoarele atribute: action, method, enctype, accept-charset, accept-charset, accept, name. Noua nu ne vor trebui toate aceste atribute pentru a face formularul. Le vom folosi numai pe primele trei.
* action ā specifica fisierulsau adresa spre care datele din formular vor fi trimise
* method ā defineste metoda prin care vor fi transmise datele catre fisierul sau adresa de la action (metodele pot fi: GET sau POST)
* enctype ā Atributul este valabil cand metoda de postare este POST. Daca acest atribut nu este specificat, are valoarea default: āapplication/x-www-form-urlencodedā. El poate sa mai capete si o alta valoare, pe care noi o vom folosi de aceasta data, si anume: multipart/form-data. Ultima valoare este folosita cand este prezent elementul INPUT in formular de tip āfileā.
Scriptul si formularul care va uploada fisierul pe server:
Pasul 1 ā Formularul HTML:
Pasul 2 ā Scriptul .php (faceti un fisier āupload.phpā). In el vom scrie urmatoarele secvente de cod:
<code><?php
// primul lucru este sa verificam daca
// a fost apasat butonul din formular care are āuploadatā
// la name
if(isset($_POST[āuploadatā]) ) {
$nume_fisier = $_FILES[āfisierā][ānameā]; //, numele fisierului
$loc_temporar = $_FILES[āfisierā][ātmp_nameā]; //, locul temporar pe server
$director = ā./zona_de_upload/ā; //, directorul in care sa uploadeze
$cale = $director.$nume_fisier; //, calea catre care sa uploadeze
move_uploaded_file($loc_temporar, $cale);
} else {
// daca userul nu a apasat butonul si
// acceseaza formularul direct din bara de adrese
// ii va aparea un mesaj de eroare
echo āNu a fost postata nici o informatie !ā;
}
?></code>
* $_FILES[āfisierā][ānameā] = numele fisierului pe care l-ai uploadat si nu calea acestuia. Spre exemplu am uploadat fisierul: āD:\My Pictures\screenshot.jpgā ā numele fisierului va fi āscreenshot.jpgā. Sau ⦠ā/home/screenshot.jpgā (pe linux) ā numele fisierului tot screenshot.jpg va ramane.
* $_FILES[āfisierā][ātmp_nameā] = adresa temporara in care se uploadeaza fisierul. In momentul in care ai facut click pe butonul submit (āuploadatā) din formular fisierul se incarca mai intai intr-un director de pe server si ramane acolo pentru scurt timp.
move_uploaded_file(argument1, argument2); ā Functia muta (, nu copie) fisierul āargument1ā sub numele de dat argumentului 2. Spre exemplu:
move_uploaded_file($_FILES[āfisierā][ātmp_nameā], ā./zona_de_upload/fisier.xmlā); ā va muta fisierul temporar in folderul āzona_de_uploadā sub numele fisier.xml !
move_uploaded_file($_FILES[āfisierā][ātmp_nameā], ā./zona_de_upload/subdirector1/mydoc.txtā); ā va muta fisierul temporar in folderele ā/zona_de_upload/subdirector1ā sub numele mydoc.txt !
āāāāāāāāā-
move_uploaded_file($loc_temporar, $cale); din functia de mai sus muta fisierul temporar in directorul āzona_de_uploadā sub numele $_FILES[āfisierā][ānameā] (adica numele fisierului uploadat).