Pagina PHP per comunicare con server FTP?
Salve, ho creato una pagina php per comunicare con il mio server FTP, la pagina dovrebbe permettere il caricamento di un file (scelto tramite un form di una pagina html) sul mio server FTP. Questa è la pagina PHP che ho scritto:
<?
$ftp_server="barb94.no-ip.biz";
$ftp_username="utente";
$ftp_password="password";
$ftp_connessione = ftp_connect($ftp_server);
$login = ftp_login($ftp_connessione, $ftp_username, $ftp_password);
if(!$ftp_connessione || !$login){
echo "Connessione fallita";
} else {
$file_da_caricare = "$file";
$dove_caricare = "guest/$file_da_caricare";
$upload = ftp_put($ftp_connessione, $dove_caricare, $file_da_caricare, FTP_ASCII);
if (!$upload) {
echo "Si è verificato un errore durante il caricamento!!!";
} else {
echo "Upload avvenuto con successo";
}
ftp_quit($ftp_connessione);
}
?>
Ovviamente il mio problema sta nel fatto che i file non vengano caricati, e mi appaia il messaggio che il caricamento non è riuscito.
Ho provato a modificare nella put il metodo ASCII con BINARY, oppure ho inserito una riga per la modalità passiva, ma niente da fare. Sul server risulta l'accesso e il login corretto, ma dopo la pagina tenta il caricamento e fallisce.
Qualcuno ha qualche idea su cosa sbaglio? (non sono molto sicuro della parte dove scelgo DOVE uploadare il file, scrivo il percorso in modo corretto? Vorrei che il file sia inserito nella sottocartella "guest")
Grazie in anticipo.
Il problema è che nella mia pagina html, permetto di scegliere il file dal pc, con un bottone "Scegli file" e lo passo alla pagina php col nome "file", non posso sapere che file di preciso sceglierà l'utente (es: potrà scegliere ciao.txt come mario.rar)
1 risposta
- ZYXDavideXYZLv 47 anni faRisposta preferita
nella variabile $file_da_caricare prova a mettere il nome completo del file da caricare, con tutto il path
per esempio /home/utente8/documenti/documento1.txt
dovresti avere una pagina "pippo.php"
in cui c'è il form che usa un utente per fare l'upload di un file
e questo form dovrebbe puntare a un'altra pagina, diciamo paperino.php
dentro paperino.php come salvi il file caricato dall'utente col form ?
perchè prima devo salvare sul disco del server web il file, e lo devi salvare in una posizione ben precisa, e poi questo file lo spedisci al server ftp
io metterei dentro paperino.php una cosa del tipo:
$PATH_SERVER_WEB = "/var/htdocs/miosito/archivio/";
$nomefile_originale = $_FILES['userfile']['name'];
$dimensione = $_FILES['userfile']['size'];
$nome_temporaneo = $_FILES['userfile']['tmp_name'];
$nomefile_breve = str_replace(" ", "", $nomefile_originale);
$nomefile_completo = $PATH_SERVER_WEB.$nomefile_breve;
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $nomefile_completo)) {
print('file caricato, attendere la connessione al server ftp<br>');
} else {
die('errore upload file<br>');
}
e se arrivi qui dentro nomefile_completo c'è il nome del file da caricare sul server ftp
ciao