When using PHP to download files, sometimes you may encounter the problem of not being able to obtain the file size. This problem may occur due to the following reasons:
So how to solve this problem? Here are some solutions for reference:
$url = 'http://example.com/file.zip'; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_NOBODY, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); $data = curl_exec($ch); $fileSize = curl_getinfo($ch, CURLINFO_CONTENT_LENGTH_DOWNLOAD); curl_close($ch);
$url = 'http://example.com/file.zip'; $opts = array( 'http' => array( 'method' => 'HEAD' ) ); $context = stream_context_create($opts); $fp = fopen($url, 'r', false, $context); $meta = stream_get_meta_data($fp); foreach ($meta['wrapper_data'] as $value) { if (stristr($value, 'content-length')) { $content_length = (int) trim(substr($value, 15)); } } fclose($fp);
In summary, it is necessary to solve the problem of PHP not being able to obtain the file size when downloading files. , you can use CURL or get the server response header directly to get the file size. These methods can help PHP developers better manage and control the file download process, improving user experience and application performance.
The above is the detailed content of How to solve the problem of not getting the file size when downloading PHP. For more information, please follow other related articles on the PHP Chinese website!