Ну, очевидно, у Вас должна быть строка Base64 URLEncoded прежде, чем отправить его на сервер.
, Если бы Вы не можете выполнить это, я предложил бы просто заменить любые встроенные пробелы назад к +; с тех пор b64 строки, как предполагается, не имеют пробелы, это - законная тактика...
Здесь нет "простого" способа - как минимум, вам нужно сгенерировать запрос HEAD
и проверить полученный тип контента, чтобы убедиться, что это изображение. Это без учета возможных проблем с реферером. curl - лучший вариант.
Если все изображения существуют на одном удаленном сервере (или в одной сети), вы можете запустить веб-службу на этом сервере, которая проверит файловую систему на наличие файла изображения и вернет логическое значение, указывающее, существует ли изображение.
Вы можете использовать curl . Просто установите для параметра curl CURLOPT_NOBODY значение true. Это пропустит информацию о теле и получит только голову (следовательно, http-код). Затем вы можете использовать CURLOPT_FAILONERROR, чтобы превратить весь этот процесс в проверку типа true / false
Я делал это для отслеживания изображений моей недвижимости ...
$im = @imagecreatefromjpeg($pathtoimg);
if($im)
imagedestroy($im); // dont save, just ack...
elseif(!$missing[$inum])
$img404arr[] = $inum;
Это «кажется» быстрее, чем загрузка фактического изображения, занимая примерно 0,3 секунды для каждого из изображений, которые в среднем 100 КБ .
Хотел бы я просто проверить заголовок и прочитать, получу ли я 200 против 404, ничего не загружая. У кого-нибудь есть это под рукой?
На данный момент это, наверное, немой вопрос, но это работает для меня:
function is_webfile($webfile)
{
$fp = @fopen($webfile, "r");
if ($fp !== false)
fclose($fp);
return($fp);
}