php - 尝试使用 php 从 mysql 数据库上的文件获取文件大小

标签 php mysql

我已经在这里和其他几个地方通过谷歌搜索了一段时间,但到目前为止还没有找到答案。要么我没有使用正确的搜索词,要么我的具体问题没有答案。

我有一个受用户身份验证系统保护的 ftp 站点(只有管理员可以从服务器上传和删除文件,任何人都可以下载),并且我已修复它以便能够将文件上传到数据库,但是当我查看列出数据库中所有可用文件的下载页面时,出现以下错误:

Warning: filesize() expects parameter 1 to be a valid path, string given in /usr/www/cgcserver/public/download.php on line 31

在该页面代码的第 31 行,我有:

$bytes = filesize($content);

与该代码行相关的页面的代码块是:

$query = "SELECT id, name, creator, content FROM upload";
$result = $mysqli->query($query);
if(mysqli_num_rows($result) == 0)
{
    echo "Database is empty <br>";
}
else
{
    while(list($id, $name, $creator, $content) = mysqli_fetch_array($result))
    {
        $bytes = filesize($content);
?>
<tr><td><a href="download.php?id=<?php $id; ?>"><?php $name . ' - ' .bytesToSize($bytes); ?></a></td><td><?php $creator; ?></td></tr>

我试图从数据库中提取文件大小,并将其显示在下载链接旁边,以便用户在下载之前知道文件有多大。 bytesToSize 只是一个函数,我必须将 filesize() 转换为字节、kb、mb 等。

任何关于我做错了什么的见解,我们将不胜感激。

请注意文件本身存储在数据库中的变量“content”中

最佳答案

如果您想要存储在数据库中的内容的大小,请使用strlen()。您无法使用 filesize(),因为您没有查看文件。

但是,更好的解决方案是直接从数据库获取内容的大小。

$query = "SELECT id, name, creator, LENGTH(content) AS size FROM upload";

关于php - 尝试使用 php 从 mysql 数据库上的文件获取文件大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36437618/

相关文章:

php - MongoCursorException 'couldn' t 获取响应 header '

php - 如何添加到数据库中的现有值

php - 为什么这个模式函数返回 null?

mysql - 使用 Entity Framework 通过 SSH 隧道连接到 MySQL

带有 mysql 数据库的 C# 应用程序,日期保存为字符串

python - aws ubuntu 20.04 mysqlclient 无法安装

php - 在 PHP 数组中设置值

php - 如何检查变量类型是否为 DateTime

MYSQL:加载数据文件但如果找到相同的键则更新?

c++ - C++ 中的 mySQL 查询