• Bannato User Attivo

    caricamento multiplo

    Ciao ragazzi, ho questo problema... ho un form per il caricamento multiplo in ajax con name="file[]" però ora non saprei come trattarli quando li ricevo... ho provato con un foreach in questo modo:
    foreach ($_FILES['foto'] as $file )
    e in quest'altro
    foreach ($_FILES['foto'] as $file => $valore)
    sia un che l'altro da valore array
    vi posto il codice completo
    [PHP]
    if($_REQUEST[invio])
    {
    require_once "SmartImage.class.php";
    foreach ($_FILES['foto'] as $file => $valore)
    {
    if($file["error"] == 0)
    {
    $img = new SmartImage($file["tmp_name"]);
    $img->getSize("30%");
    $fn = $file;
    $img->saveImage("utenti/".$user->get_property('NICK')."/".$_FILES['foto']['name']);
    }

    				else
    				{
        				echo "Errore";
    				}
    		
    	}
    }
    

    [/PHP]

    Grazie a tutti


  • User Attivo

    Ciao,
    hai provato a fare un
    [PHP]
    print_r($_FILES);
    [/PHP]
    per vedere come i dati arrivano al php? 🙂

    Per i campi input di tipo non-file, assegnando nome=dato[], il php li riceve così:
    [PHP]
    $_POST['dato'][0];
    $_POST['dato'][1];
    ...
    $_POST['dato'];
    [/PHP]

    Per il file il funzionamento è leggermente diverso e rende un pò più complesso gestire i dati tramite un foreach.
    I file vengono ricevuti in questo modo:
    [PHP]
    $_FILES['foto']['name'][1];
    $_FILES['foto']['name'][2];
    ...
    $_FILES['foto']['name'];

    $_FILES['foto']['type'][1];
    $_FILES['foto']['type'][2];
    ...
    $_FILES['foto']['type'];

    $_FILES['foto']['tmp_name'][1];
    $_FILES['foto']['tmp_name'][2];
    ...
    $_FILES['foto']['tmp_name'];

    $_FILES['foto']['error'][1];
    $_FILES['foto']['error'][2];
    ...
    $_FILES['foto']['error'];

    $_FILES['foto'][1];
    $_FILES['foto'][2];
    ...
    $_FILES['foto'];
    [/PHP]
    La struttura dell'array che, con print_r potrai verificare, è:

    
    Array
    (
        [foto] => Array
            (
                [name] => Array
                    (
                        [1] => image.gif
                        [2] => image.jpg
                    )
                [type] => Array
                    (
                        [1] => image/gif
                        [2] => image/pjpeg
                    )
                [tmp_name] => Array
                    (
                        [1] => C:\tmp\php8DC1.tmp
                        [2] => C:\tmp\php8DC2.tmp
                    )
                [error] => Array
                    (
                        [1] => 0
                        [2] => 0
                    )
                 => Array
                    (
                        [1] => 172694
                        [2] => 25793
                    )
            )
    )
    
    

    Volendo utilizzare il foreach poi recuperare tutti i dati necessari ad esempio in questo modo:
    [PHP]
    foreach ($_FILES['foto']['tmp_name'] as $file => $valore)
    {
    $tmp_name=$valore;
    $name=$_FILES['foto']['name'][$file];
    $type=$_FILES['foto']['type'][$file];
    $error=$_FILES['foto']['error'][$file];
    $size=$_FILES['foto'][$file];
    }
    [/PHP]

    Alessandro