Php. Как сохранить файл с удаленного сервера?


Начал сегодня писать парсер для своего интернет-магазина и первое, что нужно сделать — прочитать файл с удаленного сервера — т.к. доступ от поставщика крайне прост — простой URL — без ftp, авторизаций и прочих наворотов.

Думал как-то открыть его просто по URL — но все время получал ошибку о запрещенном доступе, да и впоследствии подумал, что грузить > 10МБ как-то не хорошо. Стало быть надо файл скопировать к себе и далее уже продолжать работу с ним.

Ниже приведу два варианта решения проблемы:

1) Вариант попроще. Используем комбинацию простых file_get_contents и file_put_contents.

    
$url='http://remote.com/myfile.pdf';
$local='/path/to/local/file.pdf';
file_put_contents($local, file_get_contents($url));

Метод прост и безотказен. Сохраняем в файл то, что прочитали с файла.

2) Вариант сложнее, но универсальнее. Работаем с cURL.

$remoteUrl = "http://remote.com/file.pdf";
$userAgent = 'Googlebot/2.1 (http://www.googlebot.com/bot.html)';
$ch = curl_init($tremoteUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $userAgent);
$output = curl_exec($ch);
$fh = fopen("file.pdf", 'w');
fwrite($fh, $output);
fclose($fh);

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

,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *