вопрос
Здравствуйте, подскажите, можно ли закачать файл на свой VDS сервер с другого сервера. То есть закачать файл с сервер -> мой сервер, минуя закачку на свой компьютер (сервер ->мой компьютер ->мой сервер)?
Первый. С помощью fopen, fread и прочего. Выглядит обычно так:
То есть читаем исходный файл в бинарном режиме и сразу же пишем его в свой каталог.
Второй. Через cURL. По сути это тот же способ, только с использованием cURL – подключаемся, читаем и копируем. При возможности лучше пользоваться вышеуказанным, он понятнее.
То есть здесь для чтения используется cURL, а для записи все тот же стандартный метод.
Третий. Почему-то никто никогда не использует команды Unix (или Windows, смотря какой сервер) для подобных операций. Причем на многих хостингах подобный подход не запрещен. Хотя, конечно, лучше было бы, если был бы свой VDS.
Все очень просто. Делаем следующее:
$fp = @fopen($sourceFileName, «rb»);
$fd = @fopen($origFileName, «w»);
if ($fp && $fd) {
while (!feof($fp)) {
$st = fread($fp, 4096);
fwrite($fd, $st);
}
}
@fclose($fp);
@fclose($fd);
То есть читаем исходный файл в бинарном режиме и сразу же пишем его в свой каталог.
Второй. Через cURL. По сути это тот же способ, только с использованием cURL – подключаемся, читаем и копируем. При возможности лучше пользоваться вышеуказанным, он понятнее.
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $sourceFileName);
curl_setopt($ch, CURLOPT_TIMEOUT, 300);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$st = curl_exec($ch);
$fd = @fopen($origFileName, «w»);
fwrite($fd, $st);
@fclose($fd);
curl_close($ch);
То есть здесь для чтения используется cURL, а для записи все тот же стандартный метод.
Третий. Почему-то никто никогда не использует команды Unix (или Windows, смотря какой сервер) для подобных операций. Причем на многих хостингах подобный подход не запрещен. Хотя, конечно, лучше было бы, если был бы свой VDS.
Все очень просто. Делаем следующее:
echo `wget http://site.ru/image.jpg`;