我可以成功连接到Web服务,它提供了我需要将它们保存在磁盘上的文件列表,我想知道如何下载并将它们保存在我的磁盘上?
简单响应如下(响应缩短)
<files>
<file>
<name>1.jpeg</name>
<address>c:\photos\1.jpeg</address>
<url>www.xxx.com\photos\1.jpeg</url>
</file>
<file>
<name>my.pdf</name>
<address>c:\pdfs\my.pdf</address>
<url>www.xxx.com\pdfs\my.pdf</url>
</file>
</files>
我发现以下但不确定如何保存$ output
function url_get_contents ($Url) {
if (!function_exists('curl_init')){
die('CURL is not installed!');
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $Url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$output = curl_exec($ch);
curl_close($ch);
return $output;
}
我使用了以下内容但出了点问题,它创建了文件,但是它是空的
$fp = fopen("lib\1",'x');
fwrite($f, $output);
fclose($fp);
答案 0 :(得分:2)
您的网络服务提供的文件是否公开可用且未经身份验证?如果是这样,有很多方法可以获取文件,让您知道它们的完整位置......
您可以使用PHP's file_get_contents获取文件的内容,然后将其保存在某处......
$page = file_get_contents('NETWORK_ADDRESS\pdfs\my.pdf');
或者您可以使用CURL,看看the answer to this question,有一个完整的代码示例,向您展示如何使用CURL和PHP下载文件。
或者,如果您的文件是本地(不太可能)安装到PHP,您可以使用PHP的复制功能将文件移动到您想要的位置。 Read about copy here.
一旦你有了这个文件,让我们按照上面的例子假设在$ page变量中,使用file_put_contents来保存那个文件的内容......
$file = 'filename.ext';
file_put_contents($file, $page);
有关file_put内容here的更多信息。
有很多方法可以实现,只要文件可以访问。给我们一些更多的信息,我们可以建议一个合适的解决方案。
答案 1 :(得分:2)
您需要知道公共网址才能下载文件。换句话说,除服务器之外的任何人如何访问这些文件?这是什么类型的网络服务?你使用什么协议?如果可以公开访问,则可以使用file_get_contents保存文件。否则,curl和某些身份验证可能会满足您的需求。