在PHP中从webserver下载远程文件

时间:2018-04-01 13:47:23

标签: php curl

我可以使用http://server.ext:port/page.php?username=test&password=pass

这样的链接访问播放列表文件(.m3u)

当我将此链接粘贴到我的地址栏时,会启动.m3u文件的下载,一切似乎都正常。

我想用我自己的PHP脚本过滤和组织这个文件的内容。

我在.m3u文件的本地副本上工作正常,但我想用远程文件来做这件事。

我已使用file_get_contentsreadfile进行了测试,但收到了错误消息

  

无法打开流:拒绝连接

我已经用卷曲进行了测试,但我真的不知道如何使用它。

$url="http://server.ext:port/page.php?username=test&password=pass";
$agent= 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET
CLR 1.0.3705; .NET CLR 1.1.4322)';

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_URL,$url); 
$result=curl_exec($ch);
var_dump($result);

但无法连接到服务器。

1 个答案:

答案 0 :(得分:0)

使用cURL应该相当简单:

<?php

$url = 'http://server.ext:port/page.php?username=test&password=pass';
$targetFile = fopen('download.m3u', 'w+');

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_FILE, $targetFile);

$result = curl_exec($curl);

echo $result ? 'Download successful!' : 'Download failed: ' . curl_error($curl);

curl_close($curl);

请同时查看可用的cURL选项in the PHP manual。根据服务器设置和文件大小,可能需要有其他选项(例如最大执行时间,超时时间,遵循符号链接等)。