• User Attivo

    Problema upload immagini su Internet Explorer

    Salve ragazzi, ho un bel problema da proporvi :mmm:

    Ho fatto un semplicissimo form HTML per l'upload di 5 immagini che rimanda alla pagina in PHP per la gestione dell'upload tramite il metodo POST.

    Il problema sta nel fatto che tutto funziona perfettamente su Chrome ma su Internet Explorer mi visualizza l'errore che il formato dell'immagine non è permesso!

    Vi posto il codice HTML:

    
    <html>
    <body>
    
    <form name="upload" method="post" action="upload_foto.php" enctype="multipart/form-data">
    <input type="file" name="uploadfile1"><br/>
    <input type="file" name="uploadfile2"><br/>
    <input type="file" name="uploadfile3"><br/>
    <input type="file" name="uploadfile4"><br/>
    <input type="file" name="uploadfile5"><br/> <br/>
    <input type="submit" name="go" value="Carica">
    </form>
    
    </body>
    </html>
    
    

    ...e questa è la pagina upload_foto.php:

    
    <?php
    for ($i=1; $i<=5; $i++)
    {    //comincia il ciclo FOR per l'upload di tutti i file. 
    
    $uploadfile="uploadfile$i";
    
    // controllo che non ci siano stati errori nell'upload (codice = 0)
    if ($_FILES[$uploadfile]['error'] == 0){
    // upload ok
    // controllo che il file sia nel giusto formato
    if ($_FILES[$uploadfile]['type'] != "image/gif" && $_FILES[$uploadfile]['type'] != "image/jpeg" && $_FILES[$uploadfile]['type'] != "image/jpg" && $_FILES[$uploadfile]['type'] != "image/png") die("Sono permessi solo i formati gif, jpg, jpeg e png");
    
    // ricavo l'estensione dell'immagine
    $estensione_file = strstr($_FILES[$uploadfile]['name'], '.');
    
    $nomefile="prova$i$estensione_file";
    
    // copio il file dalla cartella temporanea a quella di destinazione con un nuovo nome che coincide con l'ID dell'utente più l'estensione dell'immagine
    copy($_FILES[$uploadfile]['tmp_name'], "upload/".$nomefile) or die("Impossibile caricare il file");
    // upload terminato, scrivo il nome del file nel record dell'utente
    echo "Immagine 1, caricata con successo! <br>";
    
    }
    else{
    // controllo il tipo di errore
    if ($_FILES[$uploadfile]['error'] == 2){
    // errore, file troppo grande (> 1MB)
    die("Errore, file troppo grande: il massimo consentito è 1MB");
    }
    else{
    // errore generico
    die("Impossibile caricare il file. Sembra che il formato e la grandezza dell'imagine siano giuste. Forse abbiamo un problema al server, riprova più tardi.");
    }
    }
    
    } //finisce il ciclo FOR
    
    ?>
    
    

    Il problema è un pò strano perchè il PHP viene gestito lato server e non dal browser come per l'HTML...

    Qualche idea?
    Qualche consiglio?

    Grazie a tutti

    PS: questo problema lo avevo già postato ieri ma il codice era più complesso e non ho avuto tante risposte.
    Quello che trovate quì è abbastanza semplice quindi spero di semplificare le cose e avere più risposte...


  • User

    Prova a fare echo $_FILES[$uploadfile]['type']; E guarda quale differenta c'è tra chrome etc e internet explorer.

    Io per verifficare l'estensione dell'immagine uso qusto codice
    [PHP]
    $filename = basename($_FILES['file']['name']);
    $file = strrpos($filename, '.');
    if($file === false)
    {
    //file senza estensione
    }
    else
    {
    $ext = substr($filename, $file + 1);
    if($ext == 'png') //continua script
    else //fermati
    }
    [/PHP]


  • User Attivo

    @boghy91 said:

    Prova a fare echo $_FILES[$uploadfile]['type']; E guarda quale differenta c'è tra chrome etc e internet explorer.

    Si, alla fine ieri mi sono sviluppato lo stesso algoritmo e adesso funziona tutto perfettamente! :quote:

    Una domanda... ma la pagina PHP viene caricata subito dopo il click sul submit o prima vengono caricati i file e poi si apre la pagina PHP?

    Grazie :ciauz:


  • Super User

    @Protone86 said:

    Si, alla fine ieri mi sono sviluppato lo stesso algoritmo e adesso funziona tutto perfettamente! :quote:

    Una domanda... ma la pagina PHP viene caricata subito dopo il click sul submit o prima vengono caricati i file e poi si apre la pagina PHP?

    Grazie :ciauz:
    Prima vengono caricati i file e poi si apre la pagina