php获取远程文件大小
方法1:get_headers
- <?php
- get_headers($url,true);
- //返回结果
- Array
- (
- [0] => HTTP/1.1 200 OK
- [Date] => Sat, 29 May 2004 12:28:14 GMT
- [Server] => Apache/1.3.27 (Unix) (Red-Hat/Linux)
- [Last-Modified] => Wed, 08 Jan 2003 23:11:55 GMT
- [ETag] => "3f80f-1b6-3e1cb03b"
- [Accept-Ranges] => bytes
- [Content-Length] => 438
- [Connection] => close
- [Content-Type] => text/html
- )
- ?>
此处可以直接根据Content-Length来获取到远程文件的大小了.
方法2:curl
- function remote_filesize($uri,$user='',$pw='')
- {
- // start output buffering
- ob_start();
- // initialize curl with given uri
- $ch = curl_init($uri);
- // make sure we get the header
- curl_setopt($ch, CURLOPT_HEADER, 1);
- // make it a http HEAD request
- curl_setopt($ch, CURLOPT_NOBODY, 1);
- // if auth is needed, do it here
- if (!emptyempty($user) && !emptyempty($pw))
- {
- $headers = array('Authorization: Basic ' . base64_encode($user.':'.$pw));
- curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
- }
- $okay = curl_exec($ch);
- curl_close($ch);
- // get the output buffer
- $head = ob_get_contents();
- // clean the output buffer and return to previous
- // buffer settings
- ob_end_clean();
- echo '<br>head-->'.$head.'<----end <br>';
- // gets you the numeric value from the Content-Length
- // field in the http header
- $regex = '/Content-Length:\s([0-9].+?)\s/';
- $count = preg_match($regex, $head, $matches);
- // if there was a Content-Length field, its value
- // will now be in $matches[1]
- if (isset($matches[1]))
- {
- $size = $matches[1];
- }
- else
- {
- $size = 'unknown';
- }
- //$last=round($size/(1024*1024),3);
- //return $last.' MB';
- return $size;
- }
方法3:socket
- function getFileSize($url)
- {
- $url = parse_url($url);
- if($fp = @fsockopen($url['host'],emptyempty($url['port'])?80:$url['port'],$error))
- {
- fputs($fp,"GET ".(emptyempty($url['path'])?'/':$url['path'])." HTTP/1.1\r\n");
- fputs($fp,"Host:$url[host]\r\n\r\n");
- while(!feof($fp))
- {
- $tmp = fgets($fp);
- if(trim($tmp) == '')
- {
- break;
- }
- elseif(preg_match('/Content-Length:(.*)/si',$tmp,$arr))
- {
- return trim($arr[1]);
- }
- }
- return null;
- }
- else
- {
- return null;
- }
- }
方法4:file_get_contents
- $fCont = file_get_contents("http://www.mg27.com/1.html");
- echo strlen($fCont)/1024;
以上四种方法
curl > fsock > file_get_contents > getheader
php获取远程文件大小的更多相关文章
- php下载远程大文件(获取远程文件大小)
function download_file($url) { // $url = http://192.168.8.95/vm/download_file?downurl=http://192.168 ...
- PHP获取远程和本地文件信息(汇总)
1.PHP filesize() 函数filesize() 函数返回指定文件的大小.若成功,则返回文件大小的字节数.若失败,则返回 false 并生成一条 E_WARNING 级的错误. 但是只能获取 ...
- php获取远程图片并把它保存到本地
/* *功能:php多种方式完美实现下载远程图片保存到本地 *参数:文件url,保存文件名称,使用的下载方式 *当保存文件名称为空时则使用远程文件原来的名称 */ function getImage( ...
- 使用JCIFS获取远程共享文件
package com.jadyer.util; import java.io.File; import java.io.FileOutputStream; import java.io.IOExc ...
- curl获取远程图片存到本地
$url = 'http://sssss/sss/xu0fLo9waqKSTDO7j0kSO41O5Luq3LB6ozUvY4O7OsXUWNicB49fBs8nGYzoqcwGDARQZHpVuic ...
- php 获取远程图片保存到本地
php 获取远程图片保存到本地 使用两个函数 1.获取远程文件 2.把图片保存到本地 /** * 获取远程图片并把它保存到本地 * $url 是远程图片的完整URL地址,不能为空. */ functi ...
- 解析PHP中的file_get_contents获取远程页面乱码的问题【转】
在工作中,遇到一个问题.我需要将一个网址(该网址是一个json数据的接口,即 打开该网址,在浏览器中显示的是json数据),我使用file_get_contents($url),数据是乱码的. 通过查 ...
- scp命令获取远程文件
一.scp是什么? scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的,可能会稍微影响 ...
- PHP高效获取远程图片尺寸和大小(转)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 3 ...
随机推荐
- windows下重新安装TCP/IP协议栈
一.windows重装TCP/IP协议 前两天在windows下安装开发环境的时候,把系统的TCP/IP协议栈给搞跪了,导致系统无法ping localhost.无法在程序中创建socket等 ...
- gevent中如何实现长轮询
浏览网页时,浏览器会传HTTP 请求到服务器,服务器会根据请求将网页的内容传给浏览器,但是在很多的情况下,使用者会需要看到最新的即时性资讯,例如观看股票市场行情,而在以前只能靠着重新载入网页才能获得最 ...
- JDK里面常用的包
1.java.lang-------java里的核心类,如String.Math.Integer.System.Thread,java.lang里还有一个子包:java.lang.reflect用于实 ...
- phalcon: 缓存片段,文件缓存,memcache缓存
几种缓存,需要用到前端配置,加后端实例配合着用 片段缓存: public function indexAction() { //渲染页面 $this->view->setTemplateA ...
- SAP MM模块之批次管理
1.Batch的定义:Batch is a quantity any drug produced during a given cycle of manufacture. The essence of ...
- CMD和AMD探秘
踏上前端这条道路以来,我一直以为自己就是个娴熟的切图工,每天只需要做着重复的劳动,切图,做网站.然而,技术的发展是日新月异的,切图工早就面临淘汰.随着浏览器功能越来越完善,前端项目越来越大,代码越来越 ...
- python 练习 3
#!/usr/bin/python # -*- coding: utf-8 -*- def z94(): #斐波那契数列 def filie(x): a,b,t=1,1,0 if x==1 or x= ...
- CentOS下安装setuptools、pip和virtualenv
已经安装了Python,现在我们可以最终确定完成应用程序生产和部署的基础知识.为此,我们将设立两个最常用的工具:PIP封装经理和virtualenv中的环境管理. 一.安装setuptools set ...
- .NET Reflector 8.2支持VS2013高亮显示和代码地图视图
Red Gate Software公司最近发布的.NET Reflector 8.2支持Visual Studio 2013,其Reflector 桌面程序能够转换十六进制/十进制值.桌面程序还支持局 ...
- 小心buffer的拼接问题 --转
最近遇见一个从前没有遇见的陷阱,就是data里的chunk拼接. 由于本人身为前端工程师,对buffer的概念实在是认识不足.这次的场景是我要通过http.get去抓取远端的网页文件,很不小心的是对方 ...