【问题标题】:how to get files from web services and save them on our disk using php?如何从 web 服务获取文件并使用 php 将它们保存在我们的磁盘上?
【发布时间】:2012-12-18 12:27:16
【问题描述】:

我可以成功连接到网络服务,它提供了我需要将它们保存在我的磁盘上的文件列表,我想知道如何下载并将它们保存在我的磁盘上?

简单响应如下(响应缩短)

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

【问题讨论】:

    标签: php web-services file


    【解决方案1】:

    您的 Web 服务提供的文件是否公开可用且未经身份验证?如果是这样,有很多方法可以获取文件,前提是您知道它们的完整位置...

    您可以使用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

    有很多方法可以做到这一点,只要文件是可访问的。给我们更多信息,我们可以提出合适的解决方案。

    【讨论】:

    • 我也有文件的公共链接,我应该把它作为file_get_contents的参数吗?我找不到任何优缺点列表或教程,是否有任何方法有限制?
    • 是的,如果您有公共链接,只需执行 $page = file_get_contents($your_public_link_to_file);例如。 cURL 方法也是如此
    • 那么如何将它复制到我的磁盘上?
    • 使用 file_put_contents 作为一种选择。我已经更新了我的答案以反映如何使用它。
    • 所以每次我都应该设置正确的扩展名?例如,如果它的 123.jpeg 我应该将其设为 $file = '123.jpeg' 对吗?
    【解决方案2】:

    您需要知道公共网址才能下载文件。换句话说,除了服务器之外的任何人如何访问这些文件?这是什么类型的网络服务?你使用什么协议?如果它可以公开访问,您可以使用file_get_contents 来保存文件。否则,curl 和一些身份验证可能会满足您的需求。

    【讨论】:

    • 它是一个安静的 ws,我有文件的公共链接。
    猜你喜欢
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2010-10-26
    • 1970-01-01
    • 2014-01-30
    • 1970-01-01
    • 2012-01-07
    相关资源
    最近更新 更多