繁体   English   中英

使用 curl w/ PHP 5.3.x 保存未知文件

[英]saving unknown files with curl w/ PHP 5.3.x

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

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

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

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

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

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

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

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

我会调查

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM