сохранение неизвестных файлов с помощью curl w / PHP 5.3.x - PullRequest
0 голосов
/ 10 июня 2011

Я пытаюсь заархивировать веб-форум, на котором есть вложения, опубликованные пользователями. До сих пор я использовал библиотеку php cURL для получения отдельных тем и смог сохранить необработанные страницы. Однако теперь мне нужно найти способ архивации вложений, которые находятся на сайте.

Вот проблема: поскольку тип файла не согласован, мне нужно найти способ сохранить файлы с правильным расширением. Обратите внимание, что я планирую переименовать файл при сохранении, чтобы он был организован таким образом, чтобы его можно было легко найти позже.

Ссылка на прикрепленные файлы на странице в формате:

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

Я уже использовал preg_match (), чтобы получить URL-адреса для прикрепленных файлов. Моя самая большая проблема сейчас - просто убедиться, что извлеченный файл сохранен в правильном формате.

Мой вопрос: есть ли способ эффективно получить тип файла? Я бы предпочел не использовать регулярное выражение, но я не вижу другого пути.

Ответы [ 3 ]

1 голос
/ 10 июня 2011

Добавляет ли сервер правильное поле заголовка Content-Type при обслуживании файлов? Затем вы можете перехватить это с настройкой CURLOPT_HEADER или file_get_contents + $http_response_header.

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

0 голосов
/ 10 июня 2011

вы можете использовать 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;
0 голосов
/ 10 июня 2011

Я бы посмотрел в

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

, чтобы узнать, сможете ли вы автоматически получить тип файла, когда получите его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...