Чтение удаленного размера файла с использованием размера файла

Я прочитал руководство, в котором файлize () может вычислять размер файла из удаленного файла. Однако, когда я пытаюсь сделать это с помощью нижеприведенного фрагмента. Я получил ошибку PHP Warning: filesize(): stat failed for http://img.ruphp.com/remote-access/0000122_480_320.jpg in /tmp/test.php on line 5

Вот мой фрагмент:

 $file = "http://img.ruphp.com/remote-access/0000122_480_320.jpg"; echo filesize( $file ); 

Оказывается, я не могу использовать HTTP для filesize (). Дело закрыто. Я буду использовать фрагмент здесь как решение для работы.

filesize не работает для HTTP – это зависит от stat , который не поддерживается для протокола HTTP (S) .

Справочная страница PHP для файлов:

Refer to List of Supported Protocols/Wrappers for a listing of which wrappers support stat() family of functionality.

Это не означает, что каждый протокол / обертка работает «из коробки» с filesize . Вы всегда можете обойти это, выполнив полный GET удаленного URL-адреса и вычисляя размер возвращаемых данных, если вы можете получить заголовок Content-Length, вы можете попробовать запрос HEAD, чтобы избежать передачи данных файла.

Вы можете получить размер файла веб-url, используя приведенный ниже код

функция getFileSize ($ file) {

  $ch = curl_init($file); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $data = curl_exec($ch); curl_close($ch); $contentLength=0; if (preg_match('/Content-Length: (\d+)/', $data, $matches)) { $contentLength = (int)$matches[1]; } return $contentLength; } 

Я не знаю, где вы это читаете. filesize требует stat , и на основе страницы HTTP wrapper я не думаю, что он поддерживает stat на любой версии PHP.

Возможно, вам захочется исследовать с помощью http_head () . Я думаю, что фрагмент, который вы ссылаетесь, загружает файл, чтобы определить размер файла, который может и не понадобиться. Если веб-сервер, на который вы ссылаетесь, отправляет обратно точную информацию заголовка, вы должны иметь возможность определять размер файла, дату и некоторые другие полезные функции идентификации.

Если вы хотите получить размер удаленного изображения, попробуйте использовать getimagesize()