2010-12-02 24 views
12

Tengo curiosidad sobre cómo cargar archivos a través de FTP usando PHP. Digamos que tengo un formulario de carga y el usuario ha subido un archivo. ¿Cómo transferir el archivo (sin pasar del directorio temporal) a algún host FTP usando PHP?Carga de archivos a través de FTP usando PHP

Respuesta

18

Aquí van:

$ftp = ftp_connect($host,$port,$timeout); 
ftp_login($ftp,$user,$pass); 

$ret = ftp_nb_put($ftp, $dest_file, $source_file, FTP_BINARY, FTP_AUTORESUME); 

while (FTP_MOREDATA == $ret) 
    { 
     // display progress bar, or someting 
     $ret = ftp_nb_continue($ftp); 
    } 

// all done :-) 

manejo de errores omite por razones de brevedad.

13

Aquí es un ejemplo de código

$ftp_server=""; 
$ftp_user_name=""; 
$ftp_user_pass=""; 
$file = "";//tobe uploaded 
$remote_file = ""; 

// set up basic connection 
$conn_id = ftp_connect($ftp_server); 

// login with username and password 
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); 

// upload a file 
if (ftp_put($conn_id, $remote_file, $file, FTP_ASCII)) { 
    echo "successfully uploaded $file\n"; 
    exit; 
} else { 
    echo "There was a problem while uploading $file\n"; 
    exit; 
    } 
// close the connection 
ftp_close($conn_id); 
+1

¿Qué le sucedió a su sangría? – jwueller

+1

Lo sentimos, está bien ahora –

+0

no se puede conectar al servidor en la configuración de la conexión básica y reviso todo una y otra vez y no puedo encontrar el error –

3

Aquí hay una función que lo haga por usted.

function uploadFTP($server, $username, $password, $local_file, $remote_file){ 
    // connect to server 
    $connection = ftp_connect($server); 

    // login 
    if (@ftp_login($connection, $username, $password)){ 
     // successfully connected 
    }else{ 
     return false; 
    } 

    ftp_put($connection, $remote_file, $local_file, FTP_BINARY); 
    ftp_close($connection); 
    return true; 
} 

Uso:

uploadFTP("127.0.0.1", "admin", "mydog123", "C:\\report.txt", "meeting/tuesday/report.txt"); 
+0

¿Qué proporciona su respuesta más que la aceptada? – dvhh

+0

@dvhh Encuentro que es más fácil en una función. –

2

¿Qué hay de subir a través del rizo? (Nota: también puede usar curl para SFTP, FTPS)

<?php 

$ch = curl_init(); 
$localfile = '/path/to/file.zip'; 
$remotefile = 'filename.zip'; 
$fp = fopen($localfile, 'r'); 
curl_setopt($ch, CURLOPT_URL, 'ftp://ftp_login:[email protected]/'.$remotefile); 
curl_setopt($ch, CURLOPT_UPLOAD, 1); 
curl_setopt($ch, CURLOPT_INFILE, $fp); 
curl_setopt($ch, CURLOPT_INFILESIZE, filesize($localfile)); 
curl_exec ($ch); 
$error_no = curl_errno($ch); 
curl_close ($ch); 
if ($error_no == 0) { 
    $error = 'File uploaded succesfully.'; 
} else { 
    $error = 'File upload error.'; 
} 

?> 
Cuestiones relacionadas