php 获取超2G文件的文件size(含压缩包)

        $location = '文件绝对路径';
        $this->read_file = $location;
		$read_file_handle = fopen($location, 'r');


        return $this->set_read_stream($read_file_handle,$location);//调用


	public function set_read_stream($resource, $file = null,$size = null)
	{
		if (!isset($size) || $size < 0)
		{
			$stats = fstat($resource);

			if ($stats && $stats['size'] >= 0)
			{
				$position = ftell($resource);

				if ($position !== false && $position >= 0)
				{
					$size = $stats['size'] - $position;
				}
			}else{
			    //第三方获取大文件的文件大小
                if (!(strtoupper(substr(PHP_OS, 0, 3)) == 'WIN'))
                    $size = trim('stat -c%s $file');
                else {
                    // 必须开启修改 com.allow_dcom = true,开启extension=php_com_dotnet.dll 扩展
                    $com=new COM('Scripting.FileSystemObject');
                    $file=$com ->getfile($file); //FSO要使用绝对路径的
                    $size = $file->Size;
                }
            }
		}

		$this->read_stream = $resource;

		return $this->set_read_stream_size($size);
	}


注:$file 为文件绝对路径

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值