PDA

Просмотр полной версии : Как перенести большие файлы с чужого сайта?


Ridikh
07.07.2009, 16:52
Как перенести большие файлы с чужого сайта на свой сайт? Желательно чтобы скрипт работал так:
1) указываешь абсолютный путь папки куда нужно положить большой файл
2) указываешь ссылку на этот большой файл
3) запускаешь скрипт и он уже закачивает большие файлы на сайт

Pashkela
07.07.2009, 19:08
<?php
@set_time_limit(0);
ignore_user_abort(1);
@ini_set("display_errors","1");
$url = 'http://site/03.mp3';
$local_file = '123.mp3';
copy($url,$local_file) or die('URL not found!');
echo "Saved in $local_file";
?>


Проверял не 20-мегабайтном mp3

Ridikh
07.07.2009, 19:47
Спасибо! с некоторых сайтов так можно копировать, а с других сайтов при копировании появляется ошибка

"Warning: copy(http://site.ru/1.mp3) [function.copy]: failed to open stream: HTTP request failed! HTTP/1.1 403 Not Allowed in /home/***/www/***/public_html/1.php on line 7"

а иногда еще появляется "URL not found!"

Pashkela
07.07.2009, 19:52
allow_url_fopen в php.ini должны быть ON

а с некоторых других сайтов вполне возможно проверят рефер, браузер, IP и тому подобное, так что вероятно надо посылать дополнительные заголовки (или куки требует, например)

Т.е. есть програмное ограничение на доступ для скачивание файла. Каждый случай - индивидуальный подход, в принципе

159932
07.07.2009, 20:00
хотел бы добавить что в виндовсе при удачном копировании будет возвращать die('URL not found!');

Pashkela
07.07.2009, 20:01
хз, на linux тестил

159932
07.07.2009, 20:07
это так называемый `баг` ф-ии копи

heretic1990
07.07.2009, 20:29
так ещё можно:
<?php
set_time_limit(0);
$download = 'http://site/0000.mp4'; ////////линк
$save = '0000.mp4'; ////////имя файла
$str= ''; ///////папка куда качаем

$d = fopen($download,'r');
$s = fopen($save,'w+');

while(!feof($d))
{
$str = fread($d,512);
fputs($s,$str);
}
fclose($d);
fclose($s);

?>

Gar|k
07.07.2009, 20:58
для разнообразия fetch/wget ;) понадежднее скриптов будут + поддержка докачки.

[QwyZ]
07.07.2009, 21:05
.htaccess v koren stav i razreshai direktivu allow http