Я хочу сохранить файлы с внешнего сервера в папку на моем сервере, используя fopen, fwrite.
Сначала загружается страница с внешнего сайта и сканируется на наличие ссылок на изображения. Затем этот список отправляется из функции fwrite. Файлы созданы, но они не являются действительными файлами jpg, при просмотре их в браузере кажется, что их путь на моем сервере записан в них.
Вот код:
//read the file
$data = file_get_contents("http://foo.html");
//scan content for jpg links
preg_match_all('/src=("[^"]*.jpg)/i', $data, $result);
//save img function
function save_image($inPath,$outPath)
{
$in= fopen($inPath, "rb");
$out= fopen($outPath, "wb");
while ($chunk = fread($in,8192))
{
fwrite($out, $chunk, 8192);
}
fclose($in);
fclose($out);
}
//output each img link from array
foreach ($result[1] as $imgurl) {
echo "$imgurl<br />\n";
$imgn = (basename ($imgurl));
echo "$imgn<br />\n";
save_image($imgurl, $imgn);
}
Функция save_image работает, если я выпишу список:
save_image('http://foo.html', foo1.jpg);
save_image('http://foo.html', foo1.jpg);
Я надеялся, что смогу просто зациклить список из совпадений в массиве.
Спасибо, что посмотрели.