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

相关文章

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

一文详解Git中分支本地和远程删除的方法

《一文详解Git中分支本地和远程删除的方法》在使用Git进行版本控制的过程中,我们会创建多个分支来进行不同功能的开发,这就容易涉及到如何正确地删除本地分支和远程分支,下面我们就来看看相关的实现方法吧... 目录技术背景实现步骤删除本地分支删除远程www.chinasem.cn分支同步删除信息到其他机器示例步骤

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

C++ 检测文件大小和文件传输的方法示例详解

《C++检测文件大小和文件传输的方法示例详解》文章介绍了在C/C++中获取文件大小的三种方法,推荐使用stat()函数,并详细说明了如何设计一次性发送压缩包的结构体及传输流程,包含CRC校验和自动解... 目录检测文件的大小✅ 方法一:使用 stat() 函数(推荐)✅ 用法示例:✅ 方法二:使用 fsee

SpringMVC高效获取JavaBean对象指南

《SpringMVC高效获取JavaBean对象指南》SpringMVC通过数据绑定自动将请求参数映射到JavaBean,支持表单、URL及JSON数据,需用@ModelAttribute、@Requ... 目录Spring MVC 获取 JavaBean 对象指南核心机制:数据绑定实现步骤1. 定义 Ja

C++中RAII资源获取即初始化

《C++中RAII资源获取即初始化》RAII通过构造/析构自动管理资源生命周期,确保安全释放,本文就来介绍一下C++中的RAII技术及其应用,具有一定的参考价值,感兴趣的可以了解一下... 目录一、核心原理与机制二、标准库中的RAII实现三、自定义RAII类设计原则四、常见应用场景1. 内存管理2. 文件操

SpringBoot服务获取Pod当前IP的两种方案

《SpringBoot服务获取Pod当前IP的两种方案》在Kubernetes集群中,SpringBoot服务获取Pod当前IP的方案主要有两种,通过环境变量注入或通过Java代码动态获取网络接口IP... 目录方案一:通过 Kubernetes Downward API 注入环境变量原理步骤方案二:通过

Python远程控制MySQL的完整指南

《Python远程控制MySQL的完整指南》MySQL是最流行的关系型数据库之一,Python通过多种方式可以与MySQL进行交互,下面小编就为大家详细介绍一下Python操作MySQL的常用方法和最... 目录1. 准备工作2. 连接mysql数据库使用mysql-connector使用PyMySQL3.

使用Python实现获取屏幕像素颜色值

《使用Python实现获取屏幕像素颜色值》这篇文章主要为大家详细介绍了如何使用Python实现获取屏幕像素颜色值,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、一个小工具,按住F10键,颜色值会跟着显示。完整代码import tkinter as tkimport pyau