Upload de fisiere cu PHP
Scripturi pentru uploadare de fisiere
intr-un folder din site-ul tau se pot face multe. Va voi ararta cum sa faceti un upload simplu, insa scriptul pe care-l voi prezenta in prima faza nu este suficient de sigur pentru a putea fi folosit. Pentru ca un script de upload sa fie functional trebuie sa setam niste restrictii pentru fisierele uploadate. Acestea fiind spuse, sa incepem.Scriptul cuprinde doua fisiere: 1 fisier .html su un fisier .php
Fisierul .html il voi denumi upload.html si va cuprinde codul de mai jos:
<html> <form enctype="multipart/form-data" action="upload.php" method="POST"> Choose a file to upload: <input type="file" name="uploadedfile"><br> Description: <textarea name="descriere" rows=3 cols=30>descrierea aici</textarea><br> <input type="submit" value="Upload Fisier" /> </form> </html> |
Am introdus si un textarea cu "Descriere" dar deocamdata nu foloseste la nimic, fiind folositor doar pentru exemplele urmatoare.
Dupa cum puteti observa, se face trimitere la fisierul upload.php care va contine urmatorul cod:
<?php |
Cam asta ar fi codul necesar pentru a urca fisiere. De functionat functioneaza dar problema e ca nu e sigur din cauza lipsei restrictiilor. (se pot uploada tot felul de fisiere: executabile, de dimensiuni foarte mari ).
Limitarea tipurilor de fisiere care pot fi uploadate:
In exemplul de mai jos am adaugat conditia ca doar fisierele de tip .jpeg si .jpg sa fie acceptate.
Variabila $verif a fost setata la 1. Daca nu este indeplinita conditia este schimbata la 0 si uploadarea nu se mai face.
<?php error_reporting(0); $target_path = "uploads/"; $target_path = $target_path . basename( $_FILES['uploadedfile']['name']); $verif=1; //va fi folosita pentru validare if (!($_FILES['uploadedfile']['type']=="image/jpeg")) /* daca fisierul nu este de tipul .jpeg */ { echo "Fisierul uploadat nu are extensia corespunzatoare<br>"; $verif=0; } if ($verif==0) { echo "nu am putut sa uploadam fisierul"; } else { if(move_uploaded_file($_FILES['uploadedfile']['tmp_name'], $target_path)){ echo "Fisierul ". basename( $_FILES['uploadedfile']['name'])." a fost uploadat"; /* concateneaza textul predefinit cu numele fisierului uploadat */ } else{ echo "Avem probleme la uploadare!"; } } ?> |
Se pot pune mai multe conditii de forma IF. De exemplu o conditie pentru dimensiune:
if ($_FILES['uploadedfile']['size'] > 200000) { echo "Fisierul e mai mare decat e permis.<br>"; $verif=0; } |
Putem sa facem asta verificand extensia fisierelor. Pentru a afla extensia fisierului pe care il vom uploada si a o putea folosi pentru verificare trebuie sa o extragem cu PHP din numele fisierului.
$numefile = $_FILES['uploadedfile']['name']; /* punem numele fisierului intr-o variabila pentru a ne fi mai usor sa-l folosim in actiunea urmatoare */ $ext = substr($numefile, strpos($numefile,'.'), strlen($numefile)-1); /* extrage extensia din numele fisierului */ echo $ext."<br>"; |
Odata gasita extensia fisierului problema este ca si rezolvata.
Pentru o mai buna flexibilitate a scriptului o sa bagam intr-un array
extensiile pentru care permitem uplaodarea.
$extensii_bune = array('.jpg','.jpeg','.gif','.bmp'); |
Conditia va fi de urmatoarea:
if(!in_array($ext,$extensii_bune)) { echo "Nu suportam extensia ".$ext; $verif=0; } |
Articole asemanatoare
» Tutorial complet JavaScript (prima parte)
» Script Afisare Aleatoare de Imagini
» Numara vizitele ( Hit Counter )
Comentarii
Mda.....dar scriptul tau nu incarca fisiere mai mari de 0.5 mb .Adica chiar daca ii pui restrictia ca dimensiunea fisierului sa fie mai mica de 20 mb si fisierul va fi de 5 mb tot nu se va incarca.
Cred ca ai restrictie de la hosting pentru upload. Incearca sa rezolvi problema apeland la technical support sau modificand setarea in php.ini.
auzi ma daniele da nu ti se pare ca vrei cam multa mura in gura ......?
si eu caut de vro 3 ani un cod de comentariu ca acesta si nu m-am plins pe ceaturiii
cine vre sa comenteze buzzz!!! robyresyta@yahoo.com
Voteaza acest articol!
Trimite un comentariu!