Загрузка файла с удаленного сервера на FTP-сервер с помощью PHP - PullRequest
4 голосов
/ 16 ноября 2011

Как я могу загрузить удаленный файл по ссылке, например, http://site.com/file.zip на FTP-сервер, используя PHP? Я хочу загрузить «Vanilla Forum Software» на сервер, и мой мобильный носитель платит высокую цену, поэтому, если бы я мог загрузить файл без необходимости загружать его со своего мобильного телефона, я мог бы сэкономить деньги и выполнить свою работу.

Ответы [ 5 ]

4 голосов
/ 16 ноября 2011

Сделал вам эту функцию:

function downloadfile($file, $path) {
    if(isset($file) && isset($path)) {
            $fc = implode('', file($file));
            $fp = explode('/', $file);
            $fn = $fp[count($fp) - 1];

                if(file_exists($path . $fn)) { 
                    $Files = fopen($path . $fn, 'w');
                } else {
                    $Files = fopen($path . $fn, 'x+');
                }
                $Writes = fwrite($Files, $fc);
                if ($Writes != 0){
                    echo 'Saved at ' . $path . $fn . '.';
                    fclose($Files);
                }
                else{
                echo 'Error.';
                }

    }

}

Вы можете использовать это так:

downloadfile("http://www.webforless.dk/logo.png","folder/");

Надеюсь, что это хорошо работает, не забудьте Chmod папку назначения 777. ((Если вам нужно загрузить его на другой FTP-сервер, вы можете использовать один из сценариев FTP, опубликованных в других комментариях))

С уважением. Jonas

1 голос
/ 11 сентября 2013

Просто:

copy('ftp://user:pass@from.com/file.txt', 'ftp://user:pass@dest.com/file.txt');

Сервер PHP будет загружать и загружать трафик одновременно.

1 голос
/ 16 ноября 2011

А) скачать файл через URL:

$destination = fopen("tmp/myfile.ext","w");
//Myfile.ext is an example you should probably define the filename with the url.
$source = fopen($url,"r");
while (!feof($source)) {
  fwrite($destination,fread($source, 8192));
}
fclose($source);
fclose($destination);

Б) Загрузить файл на FTP:

$file = 'tmp/myfile.ext';
$fp = fopen($file, 'r');

$conn_id = ftp_connect($ftp_server);
$login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass);
if (ftp_fput($conn_id, $file, $fp, FTP_ASCII)) {
    echo "UPLOAD OK";
} else {
    echo "ERROR";
}
ftp_close($conn_id);
fclose($fp);

Это всего лишь быстрый пример, вероятно, есть много улучшенийчто можно сделать с этим кодом, но основная идея здесь.

Примечание: если у вас есть выделенный сервер, возможно, быстрее и проще скачать файл с помощью вызова wget.

Более подробную информацию о FTP можно найти в документе

1 голос
/ 16 ноября 2011

как то так

$con=ftp_connect("ftp.yourdomain.com");
$login_result = ftp_login($con, "username", "password");
// check connection
if ($conn_id && $login_result) {
    // Upload
    $upload = ftp_put($con, 'public_html/'.$name, "LOCAL PATH", FTP_BINARY);
    if ($upload) {
         // UPLOAD SUCCESS
    }
}

Подробнее: http://php.net/manual/en/function.ftp-put.php

0 голосов
/ 03 февраля 2012

Создайте скрипт php в папке, доступной через Интернет на целевом сервере, измените значения $ remotefile и $ localfile, укажите в браузере URL-адрес скрипта, и файл будет извлечен.

<?php
$remotefile="http://sourceserver.com/myarchive.zip";
$localfile="imported_archive.zip";
if(!copy($remotefile, $localfile))  {
    echo("Transfer Failed: $remotefile to $localfile");
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...