2010-10-13 4 views
2

Я хочу, чтобы скопировать файл с помощью PHP по HTTP с помощью ссылки в этом форматеКопирование файла с удаленного сервера с помощью PHP через HTTP

http://myserver.com/?id=1234

если открыть ссылку, загрузку запусками файлов. ..

Поэтому я предполагаю, что сервер перенаправляет файл .mp3, чтобы начать загрузку.

Итак, как скопировать/загрузить файл с удаленного сервера на мой сервер (localhost)?

+0

Не могли бы вы показать нам, как вы пытались это сделать? (код) – Claudiu

ответ

2

Я предполагаю, что удаленный сервер отправляет полный файл через HTTP. Вы можете использовать библиотеку, такую ​​как curl, для отправки HTTP-запроса и хранения полученных данных в виде файла (с использованием CURLOPT_FILE).

Если ваш локальный PHP-сервер настроен правильно, вы также можете использовать copy для копирования с удаленного URL-адреса на локальный путь.

+0

Можете ли вы предоставить мне примеры, используя оба метода? – sikas

+1

Для второго метода есть пример на странице, с которой я связан. У меня хорошее настроение, поэтому я дам прямую ссылку (http://fr.php.net/manual/en/function.copy.php#83955), но вам может понадобиться работа над вашими документальными навыками. –

6

Просто Гоув пример того, что Виктор tlking о с Скручиванием

$options = array(
    CURLOPT_FILE => '/local/path/for/file.mp3', 
    CURLOPT_FOLLOWLOCATION => true, 
    CURLOPT_URL => 'http://myserver.com/?id=1234', 

); 

$ch = curl_init(); 
curl_setopt_array($ch, $options); 
curl_exec($ch); 
+0

Как я вижу в вашем примере, путь к файлу .mp3 установлен, но я не знаю URL-адрес файла .mp3! – sikas

+0

это путь, который вы хотите загрузить тоже ... вам не нужно знать путь к файлу на удаленном сервере, если URL-адрес возвращает файл. – prodigitalson

+0

+1 для обучения мне о 'curl_setopt_array()'! Раньше не слышал об этом раньше. – chigley

0

Попробуйте использовать уведомления обратного вызова (читать здесь для Mor информаций http://www.php.net/manual/function.stream-notification-callback.php)

например вы могли бы к этому, если вы хотите скопировать:

function stream_notification_callback($notification_code, $severity, $message, $message_code, $bytes_transferred, $bytes_max) 
{ 
    if($notification_code == STREAM_NOTIFY_PROGRESS) 
    { 
    // save $bytes_transferred and $bytes_max to file or database 
    } 
} 


$ctx = stream_context_create(); 
stream_context_set_params($ctx, array("notification" => "stream_notification_callback")); 
copy($remote_url,$Local_target,$ctx); 

Другой PHP файл может читать сэкономил $ bytes_transferred и $ bytes_max и показать хороший прогресс бар.

Смежные вопросы