• User

    Errore su Upload immagine da disco

    Ciao a tutti. Non riesco a trovare l'errore sul seguente codice php che mi serve per fare l'upload di un'immagine in una cartella del server.

    Il codice del form per l'upload è il seguente:

    <form method="post" action="elabora_inserimento.php" enctype="multipart/form-data">
        <center>
        <table border="0" cellspacing="5" cellpadding="5">
            <tr>
                <td>File da caricare: <input type="file" name="nomefile"/></td>
            </tr>
            <tr>
                <td><input type="submit" name="invia" value="Invia Immagine"/><input type=reset value="Annulla"></td>
            </tr>
        </table>
    

    La pagina per l'elaborazione del file invece è la seguente:

    <?php
      require_once("config_immagini.php");
      require_once("funzioni_immagini.php");
      if (!isset($_FILES["nomefile"]))
        die("File non ricevuto\n");
      
      $tmp_nome = $_FILES["nomefile"]["tmp_name"];
      $tipo = $_FILES["nomefile"]["type"];
      $nome = $_FILES["nomefile"]["name"];
      
      if (!controllaTipo($tipo))
        die("File di tipo sconosciuto\n");
        
      if (move_uploaded_file($tmp_nome, DIR_IMMAGINI . "/" . $nome))
        echo "<p>Inserimento immagine effettuato, torna all'<a href=\"indice.php\">indice</a></p>\n";
      else
        echo "<p>Non sono riuscito a spostare il file, controlla i permessi sul server</p>\n";
    ?>
    

    L'ultimo pezzo di codice interessato è quello di configurazione dove sono specificati i dati quali formato e tipo di immagini ammisiibili:

    <?php
    
        define(DIR_IMMAGINI, "immagini/cellnuovi");
        $immagini_per_riga = 6;
        $formati_immagine = array(".jpg", ".gif", ".png");
        $tipi_immagine = array("image/jpeg", "image/gif", "image/png");
    
    ?>
    

    Le 2 funzioni che sono presenti in un'altra pagina invece sono le seguenti:

    function controllaFormato($nomefile) {
        global $formati_immagine;
        foreach ($formati_immagine as $formato) 
            if (strrpos($nomefile, $formato))
                return TRUE;
        return FALSE; // nessun formato trovato
    }
    
    function controllaTipo($tipo) {
        global $tipi_immagine;
        foreach ($tipi_immagine as $formato) 
            if (strpos($tipo, $formato))
                return TRUE;
        return FALSE; // nessun tipo trovato
    }
    

    Il problema che riscontro è che quando provo a caricare un'immagine dal mio disco .gif mi segnala l'errore relativo al Gallery inserisciFile di tipo sconosciuto. :arrabbiato:
    Qualcuno gentilmente può darmi qualche consiglio?
    grazie mille a tutti


  • User Attivo

    Puoi inserire esattamente l'errore che ti spunta?


  • User

    Dopo aver caricato l'mmagine da disco e premuto il pulsante in via mi compare l'errore "File di tipo sconosciuto". Quindi l'errore penso sia sulla funzione controlla tipo o qualcosa del genere. Solo che non riesco a trovare l'errore. Se tolgo il controllo sul formato mi carica l'immagine senza problemi. :arrabbiato:


  • User Attivo

    Prova a mettere degli echo dentro la funziona ControllaTipo per vedere se il giro lo fa correttamente!


  • User

    Sinceramente non saprei come fare il controllo con gli echo sulla funzione controlla tipo. :arrabbiato:
    Mi potresti dare qualche consiglio?


  • User

    Allora. Ho cambiato un po' il codice. Lo posto qui sotto:

    <?php
    
            $cartella = 'immagini/cellnuovi/';
            $percorso = $_FILES['miofile']['tmp_name'];
            $nome = $_FILES['miofile']['name'];
            $tipo = $_FILES['miofile']['type'];
            
        if ($tipo == "image/gif" || $tipo == "image/jpeg" || $tipo == "image/png")
            {
                if (file_exists($cartella . $_FILES["miofile"]["name"]))
                    {
                        echo "File già esistente";
                    }
    else
    {
    if (move_uploaded_file($percorso, $cartella . $nome))
    {
    echo "Upload eseguito con successo.<br>";
    }
    else
    {
    echo "Ci sono problemi nell'upload.";
    }
    }
    }
    else
    {
    echo "Si accettano solo file .gif, .jpg e .png";
    }
    

    Il problema ora è che mi riconosce senza problemi immagini con estensione gif, ma mi da problemi con immagini di tipo jpg. :arrabbiato:
    Qualche idea?
    Grazie a tutti


  • User

    Risolto il mio problema mettendo come estensioni riconosciute anche jpeg in questo modo:

    $tipo == "image/gif" || $tipo == "image/pjpeg" || $tipo == "image/jpeg" || $tipo == "image/png"
    

    Grazie lo stesso. :ciauz: