问题以确定当前下载的文件大小?

时间:2012-04-01 18:20:47

标签: php

我有一个有趣的问题。我需要从asycronusly php文件下载做一个进度条。我认为最好的方法是在下载开始之前,脚本正在创建一个txt文件,其中包括文件名和原始文件大小。

现在我们有一个ajax函数,它调用一个php脚本来检查本地文件的大小。我有两个主要问题。

  1. 文件大于2GB,因此filesize()函数已停止运行
  2. 我试图找到一种不同的方法来确定本地文件大小:
  3.   function getSize($filename) { 
    
           $a = fopen($filename, 'r'); 
           fseek($a, 0, SEEK_END); 
           $filesize = ftell($a); 
           fclose($a);
           return $filesize;
      } 
    

    不幸的是,假设我无法打开当前正在下载的文件,第二种方式会给我一些错误。

    有什么方法可以检查当前正在下载的文件的大小,文件大小会比2 GB大吗?

    非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

我通过使用exec()函数找到了解决方案:

exec("ls -s -k /path/to/your/file/".$file_name,$out);

答案 1 :(得分:0)

只需更改操作系统和PHP即可支持64位计算。你仍然可以使用filesize()。 来自filesize()手册:

  

返回值

     

以字节为单位返回文件的大小,或者为FALSE(并生成一个   发生错误时出现E_WARNING等级错误。

     

注意:因为PHP的整数类型已签名且许多平台都使用   32位整数,某些文件系统函数可能会返回意外   文件的结果大于2GB。