• 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>";
    }
    ?>