Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Upload di file tramite PHP/FTP

    Ciao a tutti, la mia domanda per voi, oggi, è più teorica che pratica.
    Infatti proprio non riesco a capire la logica di funzionamento di un upload ftp tramite php.

    Premetto che il codice l'ho già scritto e funziona, eccolo. La domanda che vi devo fare viene dopo. Leggetela, vi prego e rispondetemi.

    Codice PHP:
    <?php 
    if (isset($_POST['send_file'])) {
    $ftp_server $_POST['ftp_server'];
    $username $_POST['username'];
    $password $_POST['password'];

    if (
    $ftp_server != 'ftp server' && $ftp_server != '') {
    if (
    $username != 'username' && $username != '') {
    if (
    $password != 'password' && $password != '') {
    if (
    is_uploaded_file($_FILES['file']['tmp_name'])) {
    $file $_FILES['file']['tmp_name'];
    $new_file 'ftp/'.$_FILES['file']['name'];


    //////////////////////////////////////////////////////////////////
    //attivare la connessione ftp
    $connessione ftp_connect($ftp_server21) or die ('Impossibile connettersi al server.');
    //effettuare il login
    ftp_login($connessione$username$password) or die('Username o password errati.');
    //modalità passiva
    ftp_pasv($connessionetrue);
    //upload del file
    $invia ftp_put($connessione$new_file$fileFTP_ASCII);
    //esito dell'upload
    echo (!$invia) ? 'Upload fallito' 'Upload completato
    '
    ;
    //settaggi chmod
    if (ftp_chmod($connessione0666$new_file) !== false) {
        echo 
    $new_file.' Permessi aggiornati correttamente
    '
    ;
    } else {
        echo 
    'Impossibile impostare i permessi su '.$new_file;
    }
    // chiusura della connessione
    ftp_close($connessione);

    if (
    file_exists($_FILES['file']['name'])) {
    echo 
    'Il file esiste';
    } else {
    echo 
    'Il file non esiste';
    }
    //////////////////////////////////////////////////////////////////

    } else {
    $mex '<font color="red">Inserire file</font>
    '
    ;
    }
    } else {
    $mex '<font color="red">Inserire password</font>
    '
    ;
    }
    } else {
    $mex '<font color="red">Inserire username</font>
    '
    ;
    }
    } else {
    $mex '<font color="red">Inserire server ftp</font>
    '
    ;
    }


    }
    echo 
    $mex;
    ?>
    <form enctype="multipart/form-data" name="ftp_form" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
    <input type="text" name="ftp_server" value="ftp server"/>
    <input type="text" name="username" value="username"/>
    <input type="password" name="password" value="password"/>
    <input type="file" name="file"/>
    <input type="submit" name="send_file" value="Submit file"/>
    </form>
    Confermando che il codice funziona, la mia domanda è questa:
    Nel momento in cui io premo il tasto submit, il file viene trasferito in una cartella temporanea sul server... giusto? A quel punto, e solo a quel punto, viene eseguito il codice per la connessione FTP. Ma in quel momento, il file, non si trova già sul server?
    Qual'è il vantaggio di usare il codice per la connessione ftp invece di un semplice move_uploaded_file()?
    Vi prego rispondetemi perchè non capisco proprio.
    Grazie a tutti

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    157
    con l'ftp puoi ad esempio spostare un file su un'altro server.
    lo script che hai postato dovrebbe servire proprio a quello.. carichi il file sul tuo server e poi tramite il protocollo ftp lo copi u un'altro server.
    viva il web.

  3. #3
    grazie della risposta.
    ma a questo punto, se io volessi creare un VERO uploader FTP come faccio? Cioè uno script che mi permette di mandare tramite ftp un file dal mio pc al server?
    In realtà lo script già così funziona, mi manca solo una cosa:
    ovvero di passare allo script una variabile string che contiene il percorso locale (sul pc) del file, magari tramite un piccolo browse di file. Purtroppo l'unico che conosco è il tipo input="file" che però al submit invia il file sul server ma NON tramite FTP.
    Come posso fare?

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    157
    non penso che tu possa farlo, penso che dovresti avere un server ftp installato sul tuo pc.

    quando hai un form input file passi i dati nell'inestazione della pagina web, con l'ftp invede dovresti passare solo un'istruzione ad esempio "LIST", "CWD", "RETR" ecc.. ecc.. se non hai un server ftp in ascolto che risponde hai solo errori.

    Però chiedo anche io conferma perchè non ne sono sicuro al 100%, ti ho risposto sulla base di supposizioni teoriche ma non mi sono mai trovato al problema.
    viva il web.

  5. #5
    cosa significa "penso che tu debba avere un server ftp installato sul tuo pc"?
    pensavo che l'ftp fosse un protoccollo di trasferimento file e non un tipo di server.
    Non ho alcun problema ad aprire una connessione ftp tramite script php tra il mio pc e il mio server.
    L'unica difficoltà che ho è passargli la stringa con la posizione corretta del file sul pc.
    Sto cercando di risolvere così

    <input type="file" name="browse" style="display:none"/>
    <input type="text" name="fileroot"/>
    <input type="button" name="send_file" value="Browse file" onclick="document.ftp_form.browse.click();document .ftp_form.fileroot.value=document.ftp_form.browse. value; return false; document.ftp_form.browse.disabled=true;"/>
    <input type="submit" name="send_file" value="Send"/>

    In modo da passare la posizione del file nella casella di testo fileroot ma ho due grossi problemi:
    Questo metodo non funziona con FF (e già la cosa mi fa incavolare) e inoltre mi ritorna una posizione del tipo C:/fakepath/immagine.jpg che ovviamente il mio script per upload ftp non capisce.
    Qualche aiutino?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.