我已经在这里和其他几个地方通过谷歌搜索了一段时间,但到目前为止还没有找到答案。要么我没有使用正确的搜索词,要么我的具体问题没有答案。
我有一个受用户身份验证系统保护的 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/