【发布时间】:2010-10-13 16:53:37
【问题描述】:
我想通过 http 使用 PHP 从这种格式的链接复制文件
如果我打开链接,就会开始下载文件...
所以我假设服务器重定向到一个 .mp3 文件开始下载。
那么如何将文件从远程服务器复制/下载到我的服务器(本地主机)?
【问题讨论】:
-
你能告诉我们你是如何做到这一点的吗? (代码)
标签: php
我想通过 http 使用 PHP 从这种格式的链接复制文件
如果我打开链接,就会开始下载文件...
所以我假设服务器重定向到一个 .mp3 文件开始下载。
那么如何将文件从远程服务器复制/下载到我的服务器(本地主机)?
【问题讨论】:
标签: php
举个例子来说明 Victor 用 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);
【讨论】:
curl_setopt_array()!以前从未听说过。
CURLOPT_FILE 必须是文件句柄而不是文件名
【讨论】:
$handle = fopen("http://www.example.com/", "rb"); $内容 = ''; 而 (!feof($handle)) { $contents .= fread($handle, 8192); } fclose($handle);
来自
【讨论】:
尝试使用通知回调(在此处阅读更多信息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 并显示一个漂亮的进度条。
【讨论】: