Это происходит, когда используемый вами клиент не выполняет все перенаправления для URL-адреса медиа-объекта.Я использовал PHP с file_get_contents () на сервере PHP 7.3, и он не следовал всем перенаправлениям, как я ожидал.Я получал XML только так, как вы описали.Я перешел на использование Guzzle, и все работало замечательно, используя этот код:
$client = new \GuzzleHttp\Client();
$client->get(
$url,
[
'save_to' => 'test.jpg',
]);
Способ, которым я нашел это, использовал библиотеку, с которой я был более знаком, что позволило мне отключить перенаправления, и я получил тот же самый ответ:получал с PHPs file_get_contents ().Как только я обнаружил, что всегда могу получить XML, если перенаправления были отключены, прогресс был намного проще.
Я никогда не мог заставить file_get_contents работать с медиа-URL Twilio и прекратил попытки.Даже указание follow_location
с помощью file_get_contents () не сработало (хотя это должно быть по умолчанию). Я пробовал этот код, устанавливая follow_location
, а также другие значения заголовков, когда пытался выяснить это НЕ РАБОТАЛ :
$opts = [
"http" => [
"follow_location" => '1',
"header" => "User-Agent: my-awesome-bot/1.0.0
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close",
],
];
$context = stream_context_create($opts);
$media = file_put_contents('test.jpg', file_get_contents($url, false, $context));
# got XML for media object only, not the raw image data in test.jpg
Что касается исходного имени файла, я не думаю, что информация доступна из Twilio.Вполне возможно, что он не сохраняется вместе с загруженным файлом, поскольку все идентификаторы SID объекта, родителя и / или учетной записи указаны во всех API, которые я видел, и в соответствующей документации.