@Ayk72

Как получить filesize PHP по удаленному URl?

Здравствуйте!

Как я понял filesize на PHP не работает, если файл на удаленном сервере по URl?

Как можно получить размер файла по-другому? Может по заголовкам или как?
  • Вопрос задан
  • 752 просмотра
Решения вопроса 1
@Ayk72 Автор вопроса
Спасибо! Вопрос решен!

Нашел прекрасную функцию в интернете:

function remote_filesize($url, $user = "", $pw = ""){
    ob_start();
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_HEADER, 1);
    curl_setopt($ch, CURLOPT_NOBODY, 1);

    if(!empty($user) && !empty($pw))
    {
        $headers = array('Authorization: Basic ' .  base64_encode("$user:$pw"));
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
    }

    $ok = curl_exec($ch);
    curl_close($ch);
    $head = ob_get_contents();
    ob_end_clean();

    $regex = '/Content-Length:\s([0-9].+?)\s/';
    $count = preg_match($regex, $head, $matches);

    return isset($matches[1]) ? $matches[1] : "unknown";
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
1. В НТТР нет файлов.
2. Наличие Content-Length не гарантируется.
3. Размер файла должно отдавать специально обученное API. А за такое варварство надо руки отрывать
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы