File Uploading

postat acum 4 ani de Stefanescu Mihai in categorie PHP

Un script PHP poate fi folosit in asa fel incat sa permita utilizatorilor upload-ul de fisiere. Initial fisierele sunt uploadate intr-un director temporar si apoi sunt mutate in directorul dorit.

Atentie: Upload-ul de fisiere este periculos! Va recomand sa nu permiteti upload-ul de fisiere php, html, js, etc

Configurare php.ini

In primul rand trebuie sa va asigurati ca upload-ul de fisiere este permis pe serverul vostru. Pentru a face acest lucru verificati optiunea file_uploads din php.ini sa fie setata pe On.

Formularul HTML

Acum trebuie sa facem un formular HTML ce ne va permite sa selectam o imagine pentru upload.

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
    Selectare Imagine:
    <input type="file" name="fileToUpload" id="fileToUpload">
    <input type="submit" value="Upload" name="submit">
</form>

</body>
</html>

Ce trebuie sa stii despre formularul de mai sus:

  • asigurati-va ca metoda este POST
  • Pentru upload de fisiere tag-ul <form> trebuie sa aiba atributul enctype=”multipart/form-data”.

Se poate observa rapid ca formularul de  mai sus va procesa upload-ul in fisierul upload.php.Scriptul de UploadFisierul upload.php va contine urmatorul cod:

<?php
$target_dir = "upload_imagini/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);

if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "Fisierul este imagine - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "Fisierul nu este imagine.";
        $uploadOk = 0;
    }
}
?>

Explicatii cod:

PHP script explained:

  • $target_dir = “upload_imagini/” – folderul in care sunt salvate imaginile
  • $target_file – este calea unde sunt salvate imaginile
  • $uploadOk=1 folosim mai tarziu
  • $imageFileType – extensia fisierului

Va trebuii sa creati directorul “upload_imagini”

Verificare existenta fisier

Acum, ca am facut baza ar trebuii sa adaugam niste restrictii.

In primul rand trebuie sa verificam daca fisierul deja exista.Daca exista afisam un mesaj de eroare si setam variabila $uploadOk cu valoarea 0.

if (file_exists($target_file)) {
    echo "Fisierul deja exista.";
    $uploadOk = 0;
}

Limitare dimsniune fisierNumele input-ului file din formularul HTML este “fileToUpload”. Acum, dorim sa verificam dimensiunea acestui fisier. Daca este mai mare de 500kb afisam un mesaj de eroare si setam $uploadOk la 0.

if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Fisierul este prea mare.";
    $uploadOk = 0;
}

Verificare tip fisierCodul de mai jos permite upload-ul doar formatelor JPG, JPEG, PNG, si GIF.

if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Format interzis.";
    $uploadOk = 0;
}

Scriptul completFisierul upload.phpva avea forma finala:

<?php
$target_dir = "upload_imagini/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = pathinfo($target_file,PATHINFO_EXTENSION);
if(isset($_POST["submit"])) {
    $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
    if($check !== false) {
        echo "Fisierul este o imagine - " . $check["mime"] . ".";
        $uploadOk = 1;
    } else {
        echo "Fisierul nu este o imagine.";
        $uploadOk = 0;
    }
}
// Verificam daca deha exista
if (file_exists($target_file)) {
    echo "Fisierul deja exista.";
    $uploadOk = 0;
}
// Verificam dimensiunea
if ($_FILES["fileToUpload"]["size"] > 500000) {
    echo "Fisierul este prea mare.";
    $uploadOk = 0;
}
// Verificam formatul
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
    echo "Format interzis.";
    $uploadOk = 0;
}
// verificam daca $uploadOk este 0
if ($uploadOk == 0) {
    echo "Fisierul nu a putut fi uploadat.";
} else {
    if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
        echo "Fisierul ". basename( $_FILES["fileToUpload"]["name"]). " a fost uploadat.";
    } else {
        echo "Fisierul nu a putut fi mutat.";
    }
}
?>

 

Sunt un tanar programator din Bucuresti ce lucreaza in PHP/Mysql (MySqli/PDO), Laravel, CodeIgniter, MySQL, PostgreSQL, Wordpress, HTML5/CSS3, Sass, Photoshop si multe altele.
Google+ Community Facebook Group
Acest articol a fost mutat de pe vechea platforma.
Pentru orice eroare aparuta la mutare va rog sa ma contactati!

Comentariu postate de chrome hearts online la data de 16.05.2019
My wife and i ended up being fortunate when Albert managed to conclude his studies with the precious recommendations he obtained through the web pages. It is now and again perplexing just to happen to be giving for free procedures which usually a number of people could have been trying to sell. And we grasp we now have the writer to thank for this. Those illustrations you made, the easy website menu, the relationships you will assist to foster - it's got mostly fabulous, and it's really making our son and the family imagine that this matter is entertaining, and that's particularly mandatory. Thank you for all the pieces!
Comentariu postate de yeezy boost 350 v2 la data de 18.05.2019
I not to mention my buddies were found to be following the good guidelines from your web page while before long got a horrible feeling I had not thanked the web site owner for those techniques. Most of the people are actually as a consequence thrilled to read through them and have in effect unquestionably been having fun with those things. I appreciate you for genuinely well accommodating and then for utilizing this kind of good information most people are really needing to be aware of. My personal honest regret for not saying thanks to you earlier.