Я прочитал руководство, в котором файл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()