【问题标题】:saving unknown files with curl w/ PHP 5.3.x使用 PHP 5.3.x 使用 curl 保存未知文件
【发布时间】:2011-06-10 03:29:31
【问题描述】:

我正在尝试归档一个包含用户发布的附件的网络论坛。到目前为止,我使用 php cURL 库来获取各个主题并能够保存原始页面。但是,我现在需要找到一种方法来归档网站上的附件。

问题出在这里:由于文件类型不一致,我需要找到一种方法以正确的扩展名保存文件。请注意,我计划在保存文件时重命名文件,以便以后可以轻松找到它。

页面中附件的链接格式为:

<a href="https://example.com/get_file?fileId=4342343212223">some file.txt</a>

我已经使用 preg_match() 来获取附加文件的 URL。我现在最大的问题是确保获取的文件以正确的格式保存。

我的问题:有什么方法可以有效地获取文件类型?我宁愿不必使用正则表达式,但我没有看到任何其他方式。

【问题讨论】:

    标签: php file curl


    【解决方案1】:

    服务器在提供文件时是否添加了正确的 Content-Type 标头字段?然后,您可以通过设置 CURLOPT_HEADERfile_get_contents + $http_response_header 来拦截它。

    http://www.php.net/manual/en/reserved.variables.httpresponseheader.php

    【讨论】:

      【解决方案2】:

      我会调查

      http://www.php.net/manual/en/book.fileinfo.php

      查看是否可以在获取文件类型时自动获取文件类型。

      【讨论】:

        【解决方案3】:

        您可以使用 DOMDocument 和 DOMXpath 安全地提取 url 和文件名。

        $doc=new DOMDocument();
        $doc->loadHTML($content);
        $xpath= new DOMXpath($doc);
        //query examples:
        foreach($xpath->query('//a') as $node)
            echo $node->nodeValue;
        foreach($xpath->query('//a/@href') as $node)
            echo $node->nodeValue;
        

        【讨论】:

          猜你喜欢
          • 2010-11-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-22
          • 1970-01-01
          • 2011-03-06
          • 2014-10-12
          相关资源
          最近更新 更多