Я нашел PHP-скрипт для передачи файлов FTP, и он работает точно так же, как мне нужно для одной части моего проекта. Скрипт может загружать файлы через FTP на другой сервер, только отлично, и может выводить прогресс по мере его поступления.Как изменить PHP FTP сценарий загрузки для загрузки файлов вместо
код я использую:
$fp = fopen($local_file, 'r');
$conn_id = ftp_connect($source_ftp_server);
$login_result = ftp_login($conn_id, $source_ftp_user_name, $source_ftp_user_pass);
$ret = ftp_nb_fput($conn_id, $remote_file, $fp, FTP_BINARY);
while ($ret == FTP_MOREDATA) {
// Establish a new connection to FTP server
if(!isset($conn_id2)) {
$conn_id2 = ftp_connect($source_ftp_server);
$login_result2 = ftp_login($conn_id2, $source_ftp_user_name, $source_ftp_user_pass);
}
// Retreive size of uploaded file.
if(isset($conn_id2)) {
clearstatcache(); // <- this must be included!!
$remote_file_size = ftp_size($conn_id2, $remote_file);
}
// Calculate upload progress
$local_file_size = filesize($local_file);
if (isset($remote_file_size) && $remote_file_size > 0){
$i = ($remote_file_size/$local_file_size)*100;
printf("%d%% uploaded<br>", $i);
flush();
}
$ret = ftp_nb_continue($conn_id);
}
if ($ret != FTP_FINISHED) {
echo "<span style='color:red;'><b>There was an error uploading the file...</b></span><br>";
exit(1);
}
else {
echo "<br>Files successfully uploaded!<br><br>";
}
fclose($fp);
Я вынул некоторые несущественные детали, такие как дополнительную информацию, которая вторит сценария и т.д.
Этот код работает отлично для загрузки файлов другого сервера. Однако мне также нужно загрузить файл с сервера, используя FTP.
Я бы очень хотел использовать тот же код, что и выше, с индикатором прогресса и т. Д., Но я не уверен, как изменить этот код, чтобы загрузить файл, а не загружать его.
Это может быть пара простых изменений - это все, что необходимо.
Есть ли какие-либо части этого кода, в частности, которые необходимо будет изменить, или это может не работать так же, как и при загрузке?
Я бы очень признателен, если бы кто-нибудь мог указать мне в правильном направлении, чтобы разобраться в этом.
Как легко изменить команду ftp_nb_fput команде ftp_nb_get? Я не совсем понимаю весь этот код, поэтому трудно сказать, что нужно будет изменить.
Благодарим за помощь.
Хотя я повторно я понимаю ваш поисковый запрос, вы должны осознать к настоящему времени (рассматривая свою репутацию), что это не значит, что вы делаете свою работу за вас. Это поможет вам с кодом, который не работает. С проблемами вы не можете понять себя на вещах, которые вы пробовали. Поэтому попробуйте найти учебные пособия в Интернете о FTP-клиентах PHP. Учитесь у них и работайте над чем-то. Затем, если возникают проблемы, вы можете задать здесь вопросы. – icecub
Я не уверен, почему такое отношение так распространено на SO. Когда вы читаете инфо-информацию SO, в ней говорится: «Задавайте вопросы, получайте ответы, не отвлекайтесь». Нигде на этой странице не говорится, что вы ожидаете, что потратите часы, пытаясь разобраться в своих делах в первую очередь. Общество строилось в значительной степени частично потому, что люди обмениваются знаниями. Я уверен, что вы задали вопросы в своей жизни, что люди ответили за вас, не говоря вам, чтобы вы сами это выяснили. Это мнение, похоже, идет вразрез со всем, что здесь сказано: http://stackoverflow.com/tour –
Когда вы читаете эту страницу, это делает SO звучать как место, где люди готовы помочь, если у вас есть вопросы. Однако, похоже, у многих людей есть отношение, что лучшая помощь - «разобраться в себе». Это не похоже на то, каким должно быть SO, из информации, которую они публикуют на своем веб-сайте. Я не просил кого-либо переписать весь мой код, но даже некоторые рекомендации о том, какую часть мне нужно искать, помогут.Я всегда считал, что, если я могу помочь кому-то, я должен. Я никогда не давал людям отношения, которые просили меня о помощи. –