Загрузка файла через FTP с помощью PHP

Мне интересно, как загрузить файл через FTP с помощью PHP. Допустим, у меня загружена форма, и пользователь загрузил файл. Как перенести файл (не переходя из временного каталога) на какой-нибудь FTP-хост с помощью PHP?

Ну вот:

$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 :-) 

Обработка ошибок опущена для краткости.

Вот пример кода

  $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); 

Вот функция, чтобы сделать это для вас.

 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; } 

Применение:

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

Посмотрите раздел FTP на веб-сайте PHP – это очень полезно.

Как насчет загрузки через Curl? (Примечание: вы также можете использовать завиток для 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:password@ftp.domain.com/'.$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.'; } ?>