Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 确定当前下载文件大小的问题?_Php - Fatal编程技术网

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

Php 确定当前下载文件大小的问题?,php,Php,我有一个有趣的问题。我需要做一个进度条从一个异步php文件下载。我认为最好的方法是在下载开始之前,脚本制作一个txt文件,其中包括文件名和原始文件大小 现在我们有了一个ajax函数,它调用一个php脚本来检查本地文件的大小。我有两个主要问题 文件比2GB大,所以filesize()函数已经失效 我试图找到一种不同的方法来确定本地文件大小,如下所示: 不幸的是,第二种方法假设我无法打开当前正在下载的文件,会给我带来大量错误 是否有任何方法可以检查当前正在下载的文件的大小,并且文件大小将大于2GB

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

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

  • 文件比2GB大,所以filesize()函数已经失效
  • 我试图找到一种不同的方法来确定本地文件大小,如下所示:
  • 不幸的是,第二种方法假设我无法打开当前正在下载的文件,会给我带来大量错误

    是否有任何方法可以检查当前正在下载的文件的大小,并且文件大小将大于2GB


    非常感谢您的帮助。

    只要更改您的操作系统和PHP以支持64位计算即可。您仍然可以使用filesize()。 从filesize()手册:

    返回值

    返回以字节为单位的文件大小,或返回FALSE(并生成 错误情况下的E_级警告错误

    注意:因为PHP的整数类型是有符号的,许多平台使用 32位整数,某些文件系统函数可能返回意外的 大于2GB的文件的结果


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

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

    您是否考虑过完全跳过PHP并使用HTTP HEAD请求直接从web服务器获取文件大小?Milan您的方式看起来非常有趣,您可以给我一个代码示例如何做到这一点,或者您可以表达更多您的想法吗?如果我使用filesize(),我收到以下错误:filesize()[function.filesize]:stat失败。我正在使用Linux进行开发,但它将在windows上运行。两个系统都是64位的。是否使用文件大小的完整路径<代码>文件大小(“/full/path/to/download/file”)您确定权限正确吗?例如CHMOD777?检查PHP日志文件以了解发生了什么
    exec("ls -s -k /path/to/your/file/".$file_name,$out);