Файл, который я пытаюсь скачать, находится здесь
https://assetgame.roblox.com/Asset/?id=942531514
Когда вы загружаете ссылку, она автоматически загружает вас.
Я пытаюсь найти способ заставить PHP загрузить файл и сохранить его на сервере для дальнейшего использования.
Я пробовал Curl и file_put_contents из file_get_contents, но ни один из них не сработал.
Спасибо!
ваш URL использует HTTP Location Redirect, какой file_get_contents вообще не понимает, поэтому file_get_contents определенно не будет работать (предупреждение, еще одна причина, по которой file_get_contents может завершиться ошибкой, из-за allow_url_fopen
настройка php.ini). curl это понимает, но игнорирует по умолчанию, поэтому, вероятно, ваш код curl потерпел неудачу. явным образом скажите curl следовать http-перенаправлениям с CURLOPT_FOLLOWLOCATION
вариант, и он должен работать с curl, например
$ch = curl_init ( 'https://assetgame.roblox.com/Asset/?id=942531514' );
curl_setopt_array ( $ch, array (
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_RETURNTRANSFER => true
) );
$xml=curl_exec($ch);
var_dump($xml);
Вот разбивка.
URL, который вы пытаетесь назвать: https://assetgame.roblox.com/Asset/?id=942531514
URL-адрес файла находится по адресу: http://c3.rbxcdn.com/43865ade81ebad6d3493166f3bcfc631
Так как сервер возвращает принудительную загрузку в шапку. Вы можете попробовать что-то вроде этого:
function download_file($url,$saveto){
$cinit = curl_init ($url);
curl_setopt($cinit, CURLOPT_HEADER, 0);
curl_setopt($cinit, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($cinit, CURLOPT_BINARYTRANSFER,1);
$cexec=curl_exec($cint);
curl_close ($cinit);
if(file_exists($saveto)){
unlink($saveto);
}
$fp = fopen($saveto,'x');
fwrite($fp, $raw);
fclose($fp);
}
Надеюсь, что это работает для вас.