Я не могу сохранить некоторые образы facebook на моем сервере, так как он не понимает файл

Я использую график facebook api, и он работал хорошо, пока я не понял, что некоторые из файлов jpg имеют строку запроса в конце, которая делает их непригодными для использования.

например https://scontent.xx.fbcdn.net/hphotos-xaf1/v/t1.0-9/487872_451835128174833_1613257199_n.jpg?oh=621bed79f5436e81c3e219c86db8f0d9&oe=560F3D0D

Я попытался скрыть все после .jpg в надежде, что он все равно загрузит изображение, но, к сожалению, он этого не делает.

В следующем коде возьмите $facebook_image_url чтобы он был выше. Это отлично работает, когда URL-адрес заканчивается на .jpg но при этом не работает. В качестве примечания, я конвертирую имя в случайное число

  $File_Name = $facebook_image_url; $File_Ext = '.jpg'; $Random_Number = rand(0, 9999999999); //Random number to be added to name. $NewFileName = $Random_Number.$File_Ext; //new file name $local_file = $UploadDirectory.$NewFileName; $remote_file = $File_Name; $ch = curl_init(); $fp = fopen ($local_file, 'w+'); $ch = curl_init($remote_file); curl_setopt($ch, CURLOPT_TIMEOUT, 50); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_ENCODING, ""); curl_exec($ch); curl_close($ch); fclose($fp); $image = new Imagick(DIR_TEMPORARY_IMAGES.$NewFileName); 

Ошибка получения Im

Неустранимая ошибка: исключить исключение «ImagickException» с сообщением «Не файл JPEG: начинается с 0x3c 0x21` /mysite/temp-images/1849974705.jpg '@ jpeg.c / EmitMessage / 232'

Я могу подтвердить, что изображение не сохраняется как надлежащий jpg, просто небольшой файл размером 3 КБ с именем 1849974705.jpg (или другими случайными номерами)

Есть ли

A: Способ получения этих изображений из facebook как raw jpg

или

B: способ конвертировать их успешно в jpgs

Просто потому, что что-то имеет .jpg в URI не означает, что это изображение.

Получение этого URL через wget дает результат:

 <!DOCTYPE html> <html lang="en" id="facebook"> <head> <title>Facebook | Error</title> <meta charset="utf-8"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="cache-control" content="no-store"> <meta http-equiv="cache-control" content="max-age=0"> <meta http-equiv="expires" content="-1"> <meta http-equiv="pragma" content="no-cache"> <meta name="robots" content="noindex,nofollow"> <style> .... .... 

т.е. это не изображение, точно такое же сообщение об ошибке.

Вы всегда можете загрузить изображение с помощью file_get_contents()

Этот код работает для меня …

 file_put_contents("image.jpg", file_get_contents("https://scontent.xx.fbcdn.net/hphotos-xaf1/v/t1.0-9/522827_10152235166655545_26514444_n.jpg?oh=1d52a86082c7904da8f12920e28d3687&oe=5659D5BB"));