php获取远程文件大小

2024-08-30 09:32
文章标签 php 远程 获取 文件大小

本文主要是介绍php获取远程文件大小,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

来源URL: http://blog.csdn.net/xuxujian/article/details/7237006

获取本地文件大小filesize()就可以了,但是如何获取远程文件的大小呢? 这里介绍三个方法来获取远程文件的大小.

方法1:get_headers

[php] view plain copy
  1. <?php    
  2. get_headers($url,true);    
  3.     
  4. //返回结果    
  5. Array    
  6. (    
  7.     [0] => HTTP/1.1 200 OK    
  8.     [Date] => Sat, 29 May 2004 12:28:14 GMT    
  9.     [Server] => Apache/1.3.27 (Unix)  (Red-Hat/Linux)    
  10.     [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT    
  11.     [ETag] => "3f80f-1b6-3e1cb03b"    
  12.     [Accept-Ranges] => bytes    
  13.     [Content-Length] => 438    
  14.     [Connection] => close    
  15.     [Content-Type] => text/html    
  16. )    
  17. ?>    

 

此处可以直接根据Content-Length来获取到远程文件的大小了.

方法2:curl

[php] view plain copy
  1. function remote_filesize($uri,$user='',$pw='')    
  2. {    
  3.     // start output buffering    
  4.     ob_start();    
  5.     // initialize curl with given uri    
  6.     $ch = curl_init($uri);    
  7.     // make sure we get the header    
  8.     curl_setopt($ch, CURLOPT_HEADER, 1);    
  9.     // make it a http HEAD request    
  10.     curl_setopt($ch, CURLOPT_NOBODY, 1);    
  11.     // if auth is needed, do it here    
  12.     if (!emptyempty($user) && !emptyempty($pw))    
  13.     {    
  14.         $headers = array('Authorization: Basic ' . base64_encode($user.':'.$pw));    
  15.         curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);    
  16.     }    
  17.     $okay = curl_exec($ch);    
  18.     curl_close($ch);    
  19.     // get the output buffer    
  20.     $head = ob_get_contents();    
  21.     // clean the output buffer and return to previous    
  22.     // buffer settings    
  23.     ob_end_clean();    
  24.     
  25.     echo '<br>head-->'.$head.'<----end <br>';    
  26.     
  27.     // gets you the numeric value from the Content-Length    
  28.     // field in the http header    
  29.     $regex = '/Content-Length:\s([0-9].+?)\s/';    
  30.     $count = preg_match($regex$head$matches);    
  31.     
  32.     // if there was a Content-Length field, its value    
  33.     // will now be in $matches[1]    
  34.     if (isset($matches[1]))    
  35.     {    
  36.         $size = $matches[1];    
  37.     }    
  38.     else    
  39.     {    
  40.         $size = 'unknown';    
  41.     }    
  42.     //$last=round($size/(1024*1024),3);    
  43.     //return $last.' MB';    
  44.     return $size;    
  45. }    


 

方法3:socket

[php] view plain copy
  1. function getFileSize($url)    
  2. {    
  3.     $url = parse_url($url);    
  4.     if($fp = @fsockopen($url['host'],emptyempty($url['port'])?80:$url['port'],$error))    
  5.     {    
  6.         fputs($fp,"GET ".(emptyempty($url['path'])?'/':$url['path'])." HTTP/1.1\r\n");    
  7.         fputs($fp,"Host:$url[host]\r\n\r\n");    
  8.         while(!feof($fp))    
  9.         {    
  10.             $tmp = fgets($fp);    
  11.             if(trim($tmp) == '')    
  12.             {    
  13.                 break;    
  14.             }    
  15.             elseif(preg_match('/Content-Length:(.*)/si',$tmp,$arr))    
  16.             {    
  17.                 return trim($arr[1]);    
  18.             }    
  19.         }    
  20.         return null;    
  21.     }    
  22.     else    
  23.     {    
  24.         return null;    
  25.     }    
  26. }    


 

方法4:file_get_contents

[php] view plain copy
  1. $fCont = file_get_contents("http://www.mg27.com/1.html");    
  2. echo strlen($fCont)/1024;  

这篇关于php获取远程文件大小的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1120441

相关文章

Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案

《Vue3组件中getCurrentInstance()获取App实例,但是返回null的解决方案》:本文主要介绍Vue3组件中getCurrentInstance()获取App实例,但是返回nu... 目录vue3组件中getCurrentInstajavascriptnce()获取App实例,但是返回n

SpringMVC获取请求参数的方法

《SpringMVC获取请求参数的方法》:本文主要介绍SpringMVC获取请求参数的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下... 目录1、通过ServletAPI获取2、通过控制器方法的形参获取请求参数3、@RequestParam4、@

Python获取C++中返回的char*字段的两种思路

《Python获取C++中返回的char*字段的两种思路》有时候需要获取C++函数中返回来的不定长的char*字符串,本文小编为大家找到了两种解决问题的思路,感兴趣的小伙伴可以跟随小编一起学习一下... 有时候需要获取C++函数中返回来的不定长的char*字符串,目前我找到两种解决问题的思路,具体实现如下:

golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法

《golang获取当前时间、时间戳和时间字符串及它们之间的相互转换方法》:本文主要介绍golang获取当前时间、时间戳和时间字符串及它们之间的相互转换,本文通过实例代码给大家介绍的非常详细,感兴趣... 目录1、获取当前时间2、获取当前时间戳3、获取当前时间的字符串格式4、它们之间的相互转化上篇文章给大家介

Ubuntu中远程连接Mysql数据库的详细图文教程

《Ubuntu中远程连接Mysql数据库的详细图文教程》Ubuntu是一个以桌面应用为主的Linux发行版操作系统,这篇文章主要为大家详细介绍了Ubuntu中远程连接Mysql数据库的详细图文教程,有... 目录1、版本2、检查有没有mysql2.1 查询是否安装了Mysql包2.2 查看Mysql版本2.

Python获取中国节假日数据记录入JSON文件

《Python获取中国节假日数据记录入JSON文件》项目系统内置的日历应用为了提升用户体验,特别设置了在调休日期显示“休”的UI图标功能,那么问题是这些调休数据从哪里来呢?我尝试一种更为智能的方法:P... 目录节假日数据获取存入jsON文件节假日数据读取封装完整代码项目系统内置的日历应用为了提升用户体验,

微信公众号脚本-获取热搜自动新建草稿并发布文章

《微信公众号脚本-获取热搜自动新建草稿并发布文章》本来想写一个自动化发布微信公众号的小绿书的脚本,但是微信公众号官网没有小绿书的接口,那就写一个获取热搜微信普通文章的脚本吧,:本文主要介绍微信公众... 目录介绍思路前期准备环境要求获取接口token获取热搜获取热搜数据下载热搜图片给图片加上标题文字上传图片

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

C++常见容器获取头元素的方法大全

《C++常见容器获取头元素的方法大全》在C++编程中,容器是存储和管理数据集合的重要工具,不同的容器提供了不同的接口来访问和操作其中的元素,获取容器的头元素(即第一个元素)是常见的操作之一,本文将详细... 目录一、std::vector二、std::list三、std::deque四、std::forwa

使用Python高效获取网络数据的操作指南

《使用Python高效获取网络数据的操作指南》网络爬虫是一种自动化程序,用于访问和提取网站上的数据,Python是进行网络爬虫开发的理想语言,拥有丰富的库和工具,使得编写和维护爬虫变得简单高效,本文将... 目录网络爬虫的基本概念常用库介绍安装库Requests和BeautifulSoup爬虫开发发送请求解