【问题标题】:Get sizes of uploaded files with php使用 php 获取上传文件的大小
【发布时间】:2017-11-19 10:13:47
【问题描述】:

在我将一些文件上传到我的服务器并将它们保存在 sql 中后,我将它们列出在我的网站上。

while($a = mysqli_fetch_assoc($get_files))
        {
            $path_parts = pathinfo($a['fajl_file']);
            $extension = $path_parts['extension'];

            $path = $host.'/documents/'.$a['fajl_file'];

            echo '<tr>
                <td>'.html($a['fajl_nev']).'</td>
                <td>'.date_substr($a['fajl_datetime']).'</td>
                <td>'.$extension.'</td>
                <td>'.filesize($path).'</td>
                <td class="table_text_center">
                    <a class="table_delete_link delete_data" id="" href="#"><i class="fa fa-download"></i></a>
                </td>
            </tr>';
        }

在我列出文件的地方,我不仅要显示名称或上传日期,还要显示文件大小。

使用此代码,我收到此错误:

警告:filesize(): stat 失败

当我检查网站来源时,我给出的路径是正确的。这些文件位于服务器上的文档文件夹中。

【问题讨论】:

  • 确保您在$path 中传递目录路径。如果$path 包含url 那么你不会得到大小
  • 什么意思?对不起,我不明白。你能写一个例子吗?
  • 你会显示你的$path包含什么吗?
  • 它返回完整的 url、域、文件夹和文件。没错,我也能打开。
  • 你必须使用文件路径而不是 url。

标签: php file-upload


【解决方案1】:

您的问题是当filesize() function 需要相对本地文件链接时,您将绝对 URL 传递给它(限定符:某些 URL 在 PHP5+ 中有效)。

   $path = $host.'/documents/'.$a['fajl_file'];
   /*** 
   /*  http://www.someweb.site/documents/somefile.pdf
   /***/
   echo '<td>'.filesize($path).'</td>';

上面是传递给输出filesize("http://www.someweb.site/documents/somefile.pdf"),这不是你想要的,你需要将文档路径翻译成本地文件版本

您可以使用$_SERVER['DOCUMENT_ROOT']

   $path = $host.'/documents/'.$a['fajl_file'];
   $localPath = $_SERVER['DOCUMENT_ROOT'] . '/documents/'.$a['fajl_file'];
   /*** 
   /*  /home/users/webaccount/www/documents/somefile.pdf
   /***/
   echo '<td>'.filesize($localPath).'</td>';

这应该会输出请求的数据。

【讨论】:

    【解决方案2】:

    使用 filesize() 函数的文件路径。

    示例文件路径:

    /var/www/myfile.txt
    

    或在 Windows 上

    C:\xampp\htdocs\myfile.txt
    

    【讨论】:

    • 对不起,我不明白。
    猜你喜欢
    • 1970-01-01
    • 2011-05-10
    • 2011-11-21
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    相关资源
    最近更新 更多