使用PHP over HTTP从远程服务器复制文件

时间:2010-10-13 16:53:38

标签: php

我想使用这种格式的链接使用PHP over http复制文件

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

如果我打开链接,则会开始下载文件...

所以我假设服务器重定向到.mp3文件以开始下载。

那么如何将文件从远程服务器复制/下载到我的服务器(localhost)?

4 个答案:

答案 0 :(得分:6)

仅举一个Vector与cURL讨论的例子:

$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);

答案 1 :(得分:2)

我假设远程服务器通过HTTP发送完整文件。您可以使用curl等库来发送HTTP请求,并将接收到的数据存储为文件(使用CURLOPT_FILE)。

如果您的本地PHP服务器配置正确,您还可以使用copy从远程URL复制到本地路径。

答案 2 :(得分:0)

$ handle = fopen(“http://www.example.com/”,“rb”); $ contents =''; while(!feof($ handle)){   $ contents。= fread($ handle,8192); } FCLOSE($处理);

http://php.net/manual/en/function.fread.php

答案 3 :(得分:0)

尝试使用通知回调(请阅读此处了解mor信息http://www.php.net/manual/function.stream-notification-callback.php

e.g。你可以这样做,如果你想复制:

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并显示一个很好的进度条。