• User

    Script caricamento file tramite form

    Salve a tutti!
    Ho realizzato un form che mi invia i file in una cartella all'interno dell'ftp.
    Lo script pare funzioni visto che non mi da alcun tipo di errore nel caricamento dei file, ma in realtà il file non viene caricato all'interno della cartella desiderata. (La cartella in questione si chiama upload)
    Vi posto di seguito il mio codice:

    FILE inizia.php

    <!--apriamo il form e specifichiamo il tipo di dati e il metodo di invio-->
    <form action="upload.php" enctype="multipart/form-data" method="post">
    <!--settiamo la dimensione massima dei file in byte, nel nostro caso 1MB=1024000byte-->
    <input name="MAX_FILE_SIZE" type="hidden" value="1024000" />
    File da caricare:
    <!--campo per la scelta del file-->
    <input id="file" name="file" type="file" />
    <!--bottone di invio-->
    <input name="submit" type="submit" value="Carica" />
    </form>

    FILE upload.php

    <?php
    //controlliamo che il file rispetti le dimensioni impostate
    if ($_FILES["file"] < 1024000){
    //controlliamo se ci sono stati errori durante l'upload
    if ($_FILES["file"]["error"] > 0){
    echo "Codice Errore: " . $_FILES["file"]["error"]."
    ";
    }
    else{
    //stampo alcune informazioni sul file
    //il nome originale
    echo "Nome File: " . $_FILES["file"]["name"]."
    ";
    //il mime-type
    echo "Tipo File: " . $_FILES["file"]["type"] . "
    ";
    //la dimensione in byte
    echo "Dimensione [byte]: " . $_FILES["file"] . "
    ";
    //il nome del file temporaneo
    echo "Nome Temporaneo: " . $_FILES["file"]["tmp_name"] . "
    ";
    //controllo se il file esiste già sul server
    if (file_exists("upload/" . $_FILES["file"]["name"])){
    echo "Il file " . $_FILES["file"]["name"] . " è già presente sul server";
    }
    else{
    //sposto il file caricato dalla cartella temporanea alla destinazione finale
    move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
    echo "File caricato in: " . "upload/" . $_FILES["file"]["name"];
    }
    }
    }
    else{
    echo "File troppo grande!!";
    }
    ?>

    Dove sbaglio??:?


  • User Attivo

    Io ho provato il tuo script e funziona, l'unica cosa che accade è la visualizzazione di alcuni notice appena accedi alla pagina, visto che esegui un controllo su $_FILES ["file"] senza controllare che sia valorizzato.


  • User

    @codencode said:

    [...]

    Ti ringrazio codencode.
    Quindu come dovrei fare??
    E' strano comunque perchè a me non funziona lo script.
    Cioè mi dice che invia correttamente ma in realtà all'interno della cartella il file non c'è. :arrabbiato:


  • ModSenior

    Ciao Bum Bum #11,
    che permessi ha la cartella in cui dovrebbe eseguire l'upload?


  • User

    Ciao Thedarkita,
    attualmente la cartella ha come attributi 755.
    **


  • ModSenior

    Prova a cambiarli in 777 e vedi se funziona.


  • User

    Ok provo immediatamente e ti dico se funziona. 😉


  • User

    Sei un grande cosi funziona lo inserisce nella cartella!! :yuppi:
    Però ora mi servirebbe una cosa:
    quando ne inserisco uno con lo stesso nome mi dice giustamente che il file è già presente sul server perchè fa un controllo.
    Io vorrei fare in modo che inviando un file con lo stesso nome lo sovrascriva a quello esistente.
    C'è un modo?
    Nel frattempo grazie mille per l'aiuto!


  • ModSenior

    Puoi cancellare quello esistente con unlink e mettere il file nuovo al suo posto.


  • User

    Mmmmm :mmm:
    Scusa l'ignoranza, mi potresti postare la sintassi da inserire all'interno del mio file?? 🙂


  • ModSenior

    [php]
    if (file_exists("upload/" . $_FILES["file"]["name"])){
    unlink("upload/" . $_FILES["file"]["name"]);
    move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
    }
    [/php]
    Ovviamente devi avere i permessi sul file per poterlo eliminare.


  • User

    Dirti che sei il mio idolo sarebbe poco!!! 😄
    Grazie mille funziona alla grande!!!
    UN FENOMENO!!! :yuppi:
    Ciao a risentirci!!:ciauz:


  • ModSenior

    Figurati. 🙂

    :ciauz:


  • User Attivo

    ciao 🙂 molto utile funziona era ciò che cercavo per inserirlo nella ajax chat 🙂 ma se voglio che carica solo il file png? è giusto cosi
    if ($_FILES["file"]["type"] < png){ grazie per la risposta 🙂 oppure

    <?php
    //controlliamo che il file rispetti il formato png
    $types = array('image/png', 'image/png');
    if (in_array($_FILES['inputname']['type'], $types)) {
    // Your file handing script here
    } else {
    // Error, filetype not supported
    }

    //controlliamo che il file rispetti le dimensioni impostate
    if ($_FILES["file"] < 1024000){
    //controlliamo se ci sono stati errori durante l'upload
    if ($_FILES["file"]["error"] > 0){
    echo "Codice Errore: " . $_FILES["file"]["error"]."
    ";
    }
    else{
    //stampo alcune informazioni sul file
    //il nome originale
    echo "Nome File: " . $_FILES["file"]["name"]."
    ";
    //il mime-type
    echo "Tipo File: " . $_FILES["file"]["type"] . "
    ";
    //la dimensione in byte
    echo "Dimensione [byte]: " . $_FILES["file"] . "
    ";
    //il nome del file temporaneo
    echo "Nome Temporaneo: " . $_FILES["file"]["tmp_name"] . "
    ";
    //controllo se il file esiste già sul server
    if (file_exists("img/avatars/" . $_FILES["file"]["name"])){
    unlink("img/avatars/" . $_FILES["file"]["name"]);
    move_uploaded_file($_FILES["file"]["tmp_name"], "img/avatars/" . $_FILES["file"]["name"]);}
    else{
    //sposto il file caricato dalla cartella temporanea alla destinazione finale
    move_uploaded_file($_FILES["file"]["tmp_name"], "img/avatars/" . $_FILES["file"]["name"]);
    echo "<br><br>Your file was uploaded successfully.<br>";
    echo "Refresh the chat browser window to see your Avatar";
    echo "<br/><br/><input type='button' value='Close this window' onclick='self.close()'>";
    }
    }
    }
    else{
    echo "<center>The file must be both .png and under 250kb in size!<br><br>";
    echo "<input type='button' value='Go Back and Try Again' onclick='goBack()'></center>";
    }
    ?>