DA NU
OK
Adresa ta de e-mail:.
captcha image

Abonează-mă Anulează
DATE DE CONECTARE




MENIU
Încărcare multiplă de imagini cu jQuery AJAX and PHP / Upload Multiple Images with jQuery AJAX and PHP

Încărcare multiplă de imagini cu jQuery AJAX and PHP / Upload Multiple Images with jQuery AJAX and PHP

Cu acest script puteți face upload de imagini pe site fără să se mai reîncarce pagina cu fomularul.

1. Codul HTML

Partea afișată utilizatorului

Vom adăuga câteva proprietăți pentru previzualizarea imaginilor încărcate.

<style type="text/css">
    img {
        height:100px;
        width: auto;
        margin: 5px;
    }
</style>

După ce imaginile vor fi încărcate, se vor afișa cu înălțimea fixă de 100 pixeli și un spațiu în jurul lor de 5 pixeli.

Următorul pas este să creăm un "input" de tip "file" cărui îi vom seta numele și id-ul ca fiind poze și îi vom adăuga atributul "multiple" pentru a putea încărca mai multe imagini simultan.

<input type="file" name="poze" id="poze" multiple/>

Tot ce mai trebuie scris la partea de HTML este secțiunea paginii unde vor fi afișate rezultatele încărcării. Vom creea o secțiune html de tip div cu id-ul "arataPozele".

<div id="arataPozele"></div>

Codul complet

<style type="text/css">
    img {
        height:100px;
        width:auto;
        margin: 5px;
    }
</style>
<input type="file" name="poze" id="poze" multiple/>
<div id="arataPozele"></div>

2. Script jQuery AJAX

În momentul schimbării input-ului cu id-ul "poze" se va creea un obiect FormData() si se vor număra fișierele selectate. Va rula o funcție de tip loop pentru fișierele selectate și se vor adăuga în obiect. Obiectul va fi trimis cu o cerere AJAX POST catre fisierul incarcaPoze.php. Modificați lista de fișiere acceptate după bunul plac, modificând array-ul fisiereAcceptate. În cazul în care un fișier nu face parte din această listă, scriptul va afișa o eroare pentru fișierul respectiv. Dacă cererea Ajax a avut loc cu succes atunci in div-ul cu id-ul "arataPozele" vor fi afișate pozele încărcate.

Codul complet

<script>
$("#poze").change(function(){ 
    var poze = $("#poze")[0].files;
    var eroare = "";
    var form_data = new FormData();
    var fisiereAceptate = ["jpg","jpeg"];

    for(var count = 0; count<poze.length; count++){
        var name = poze[count].name;
        var extensie = name.split(".").pop().toLowerCase();

        if(jQuery.inArray(extensie, fisiereAceptate) == -1){
            eroare += "Fisierul " + name + " nu este valid"
        }
        else{
            form_data.append("poze[]", poze[count]);
        }
    }
    if(eroare == ""){
        $.ajax({
            url: "incarcaPoze.php",
            method:"POST",
            data:form_data,
            contentType:false,
            cache:false,
            processData:false,
            beforeSend:function(){
                $("#arataPozele").html("<label>Se încarcă...</label>");
            },success:function(data){
                $("#arataPozele").html(data);
                $("#poze").val("");
            }
        })
    }
    else{
        alert(eroare);
    }
});
</script>

3. Fișierul PHP

Fișierul PHP verifică dacă există fișiere in variabila globală $_FILES, iar dacă există, acestea vor fi băgate în funcție de tip loop pentru a putea face upload-ul in directorul specificat și pentru a arăta pozele în div-ul din pagina html.

<?php
if($_FILES){
    foreach($_FILES['poze']['tmp_name'] as $key => $tempName){
        $director = 'imaginiIncarcate/';
        $numeFisier = $director.$_FILES['poze']['name'][$key];
        $poza = addslashes($tempName);
        $poza = file_get_contents($poza);
        file_put_contents($numeFisier ,$poza);
        echo '<img src="'.$numeFisier.'"/>';
    }
}
?>

4. Rezultatul final


Fișiere atașate articolului

1. Exemplu-incarcare-multipla.zip
Ultima modificare făcută de Sandu Marian Silviu la data 18.05.2020 23:32:30

Dacă ți-a plăcut articolul, ajută-ne cu un share:
Distribuie Tweet Whatsapp Telegram


Citește și alte articole legate de imagini multiple, jquery, php, ajax, multiple uploads

top
TOP