2013-01-11 10 views
7

Desidero caricare un file tramite il caricamento FTP in un modulo.Caricamento FTP tramite modulo PHP

<html> 
    <body> 
    <form enctype="multipart/form-data" action="upload_file.php" method="POST"> 
     <input type="hidden" name="MAX_FILE_SIZE" value="100000" /> 
     Choose a file to upload: <input name="uploadedfile" type="file" /><br /> 
     <input type="submit" value="Upload File" /> 
    </form> 
    </body> 
</html> 

Ecco il file PHP:

<?php 

$ftp_server = "xxx"; 
$ftp_username = "xxx"; 
$ftp_password = "xxx"; 

// setup of connection 
$conn_id = ftp_connect($ftp_server) or die("could not connect to $ftp_server"); 

// login 
if (@ftp_login($conn_id, $ftp_username, $ftp_password)) 
{ 
    echo "conectd as [email protected]$ftp_server\n"; 
} 
else 
{ 
    echo "could not connect as $ftp_username\n"; 
} 

$file = $_FILES["file"]["name"]; 
$remote_file_path = "/home/www/lifestyle69/import/".$file; 
ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII); 
ftp_close($conn_id); 
echo "\n\nconnection closed"; 

?> 

Il collegamento FTP si connette con successo ma il file è da nessuna parte.

Qualcuno può aiutarmi?

Grazie!

+0

Quale database? controllare i permessi della cartella che dovrebbero essere impostati su 777 – vodich

+0

Ups, mi spiace. Volevo scrivere la connessione ftp. Ma non funziona. – Raffinatore

+0

e se hai un modulo più grande devi digitare di nuovo?

? –

risposta

6

Perché hai <input name="uploadedfile" type="file" />:

$file = $_FILES["file"]["name"]; // wrong 
$file = $_FILES["uploadedfile"]["name"]; // right 

Perché è necessario il nome del file della copia temporanea memorizzata da PHP, che esiste sulla server:

ftp_put($conn_id, $remote_file_path, $file, FTP_ASCII); // wrong 
ftp_put($conn_id, $remote_file_path, $_FILES["uploadedfile"]["tmp_name"], 
     FTP_ASCII); // right 

Fare riferimento a PHP documentation per ulteriori informazioni su $ _FILES.

+0

Grazie! Ora funziona!! :) – Raffinatore

1

Sei sicuro che la cartella in cui stai caricando abbia le autorizzazioni corrette? Prova a chmoding su 777 e vedi se funziona.

+0

Grazie, sì, ma non funziona. Hai altre idee? – Raffinatore

+2

Solo un suggerimento: non suggerire mai "prova chmoding su 777" senza una dichiarazione di non responsabilità "fai questo solo per il test. Ripristina le autorizzazioni più sicure una volta trovato il problema". – mmalmeida

+0

@mmalmeida Mi chiedo. non sono comunque permessi sul server dietro una connessione ftp con password? anche se ho una cartella 777 sul mio host ftp, non può essere scritta da internet, devi essere connesso al server. –

1

Il file è memorizzato sul server con nome temporaneo, quindi quando si tenta di caricare $_FILES['file']['name'], non riesce, perché il file con tale nome non esiste. Invece si dovrebbe chiamare ftp_put() con $_FILES['file']['tmp_name']

E 'spiegato un po' meglio here

+0

Grazie! Ora funziona! :) – Raffinatore