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).