Проверьте, существует ли изображение на удаленном URL

Ну, очевидно, у Вас должна быть строка Base64 URLEncoded прежде, чем отправить его на сервер.
, Если бы Вы не можете выполнить это, я предложил бы просто заменить любые встроенные пробелы назад к +; с тех пор b64 строки, как предполагается, не имеют пробелы, это - законная тактика...

48
задан Cristian Cotovan 1 September 2009 в 07:30
поделиться

5 ответов

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

6
ответ дан 7 November 2019 в 12:05
поделиться

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

-1
ответ дан 7 November 2019 в 12:05
поделиться

Вы можете использовать curl . Просто установите для параметра curl CURLOPT_NOBODY значение true. Это пропустит информацию о теле и получит только голову (следовательно, http-код). Затем вы можете использовать CURLOPT_FAILONERROR, чтобы превратить весь этот процесс в проверку типа true / false

4
ответ дан 7 November 2019 в 12:05
поделиться

Я делал это для отслеживания изображений моей недвижимости ...

$im = @imagecreatefromjpeg($pathtoimg);
if($im)
  imagedestroy($im); // dont save, just ack...
elseif(!$missing[$inum])
  $img404arr[] = $inum;

Это «кажется» быстрее, чем загрузка фактического изображения, занимая примерно 0,3 секунды для каждого из изображений, которые в среднем 100 КБ .

Хотел бы я просто проверить заголовок и прочитать, получу ли я 200 против 404, ничего не загружая. У кого-нибудь есть это под рукой?

3
ответ дан 7 November 2019 в 12:05
поделиться

На данный момент это, наверное, немой вопрос, но это работает для меня:

function is_webfile($webfile)
{
 $fp = @fopen($webfile, "r");
 if ($fp !== false)
  fclose($fp);

 return($fp);
}
0
ответ дан 7 November 2019 в 12:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: