Upload di file via ftp tramite php
Tramite specifiche funzioni php è possibile avviare una sessione ftp per trasferire dei file da un server ad un altro, per farlo prendere come esempio il seguente codice:
<?php // indirizzo del server ftp su cui fare l'upload del file $ftp_server = "ftp.ftpserver.com"; // username del server ftp $ftp_user_name = "username"; // password del server ftp $ftp_user_pass = "password"; // nome del file locale da trasferire $local_file = "local_dir/local_file"; // nome del file di destinazione $destination_file = "dest_dir/dest_file"; // Connessione al server ftp $conn_id = ftp_connect($ftp_server); // Risultato della connessione if (!$conn_id) { echo "Impossibile connettersi al server $ftp_server!"; die(); } else { echo "Connesso a $ftp_server.\n"; } // Login sul server $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // Risultato del login if (!$login_result) { echo "Login fallito!"; die(); } else { echo "Login ok."; } // Trasferimento del file if (ftp_put($conn_id, $destination_file, $local_file, FTP_ASCII)) { echo "$local_file trasferito!\n"; } else { echo "Errore durante il trasferimento di $local_file\n"; } // Chiusura della connessione ftp_close($conn_id); ?>











novembre 20th, 2007 at 20:10
Molto bello lo script.. Peccato che non mi funziona.. Probabilmente sbaglio la la scrittura del $local_file..
Io lo scrivo così:
$local_file = “/home/dumbsim/win_xp/pittogrammi/freeware.png”;
C’è qualcosa di sbagliato?
novembre 21st, 2007 at 11:53
Se il file esiste in quella locazione è giusto.
Ricordati che il nome del file lo devi mettere anche in $destination_file, quindi nel tuo caso:
$destination_file = “freeware.png”;
Tutto questo sempre che riesci a superare la procedura di login, fammi sapere.
novembre 21st, 2007 at 17:48
//faccio l’upload del file
$file = ftp_put ($stream, “trick.txt”, “/home/dumbsim/Documenti/trick.txt”, FTP_ASCII);
//controllo l’upload del file
if ($file) {echo “Il file è stato uploadato con successo.”;}
else {echo “Il file non è stato uploadato con successo.”;}
io uso questo codice. e come output mi dice: Il file non è stato uploadato con successo.
Dove potrebbe essere l’errore? La connessione funziona, il login viene effettuato, se gli dico di creare o cancellare una cartella funziona.
novembre 21st, 2007 at 18:16
Una motivazione che mi viene in mente è che il file che stai tentando di caricare è abbastanza grande e l’upload non finisce nei 30 secondi massimi che ha a disposizione uno script php. In tal caso ti basta mettere l’istruzione
set_time_limit(0);
come prima istruzione dello script.
Altra possibile motivazione può essere che il server ftp su cui tenti di fare l’upload necessiti una connessione passiva e non attiva, in tal caso appena dopo il login usa l’istruzione
ftp_pasv($conn_id, true);
per abilitare la modalita passiva sulla connessione.
aprile 8th, 2008 at 17:58
ciao nn riesco a fare funzionare il codice o meglio quando carico il file e dovrebbe salvarlo con ftp_put mi dà il seguente errore Permission denied
a cosa è dovuto ? come faccio a risolverlo ? attendo una tua risposta grazie
aprile 8th, 2008 at 21:51
Ciao, come puoi ben intuire dal messaggio di errore il problema consiste nel fatto che l’utente con cui fai il login non ha i permessi necessari per scrivere nella directory nella quale stai tentando di fare l’upload. Usando un qualsiasi client ftp, loggandoti con lo stesso username e password e tentando di caricare lo stesso file nella stessa directory dovresti ottenere lo stesso errore. Prova a cambiare (se puoi) i permessi della directory mettendo il permesso di scrittura a tutti gli utenti e vedi se cosi funziona
maggio 14th, 2010 at 11:51
Ciao, ho un problema nel fare il download del file (e quindi anche del upload). La connessione ed il login vanno entrambi a buon fine ma
utilizzando questi parametri:
$file_da_scaricare = “text.txt”;
//il file è a radice)
$dove_scaricare =
“C:\Users\pecorso_completo\cli_ambienta.txt”;
poi eseguo il download :
$download = ftp_get($ftp_connessione, $dove_scaricare, $file_da_scaricare, FTP_BINARY);
Ma ho sempre lo stesso errore:
Warning: ftp_get() [function.ftp-get]: Failed to establish connection