Мне интересно, как загрузить файл через 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.'; } ?>