从具有重定向的URL保存文件

我正在尝试保存通过Twilio发送的所有媒体的本地副本。

$media = file_get_contents($mediaUrl);
$filename = $mediaSid . '.' . $fileExtension;
file_put_contents(public_path('storage/mms/' . $filename),$media);

问题是file_get_contents似乎没有遵循重定向,所以我得到了一个包含TwiML的文件。下面有一个我不断得到的例子。我的问题是我需要使用什么功能,以便它遵循重定向并获得媒体而不是XML的实际数据?

创建的文件:

<?xml version='1.0' encoding='UTF-8'?>
<TwilioResponse><Media><Sid/><accountSid>AC....</accountSid><ParentSid/><ContentType/><DateCreated>Fri,08 Nov 2019 01:49:02 +0000</DateCreated><DateUpdated>Fri,08 Nov 2019 01:49:02 +0000</DateUpdated><Uri>/2010-04-01/accounts/AC.../Messages/MM.../Media/ME...</Uri></Media></TwilioResponse>
cahdj123 回答:从具有重定向的URL保存文件

根据Twilio支持,建议使用libcurl而不是file_get_contents解决此特定问题。

原因是Twilio发送的临时URL超过1024个字符,将被忽略。

$mediaUrl = "https://api.twilio.com/2010-04-01/Accounts/ACxxxxxxx/Messages/MMxxxxxxxxxxx/Media/MExxxxxxxxxxxxx";

$accountSid = "ACxxxxxxxxxxxxxxx";
$authToken = "...";

$curl = curl_init();
$outfile = fopen('temp.jpg','w+');
$options = array(
    CURLOPT_HTTPGET => true,CURLOPT_URL => $mediaUrl,CURLOPT_FOLLOWLOCATION => true,CURLOPT_HTTPAUTH => CURLAUTH_BASIC,CURLOPT_USERPWD => "$accountSid:$authToken",CURLOPT_FILE => $outfile
);
curl_setopt_array($curl,$options);
curl_exec($curl);
curl_close($curl);
本文链接:https://www.f2er.com/3140676.html

大家都在问