获取 PHP 目录中的第一个文件

问题描述 投票:0回答:3

我想使用 PHP 获取目录中的第一个文件。

我正在尝试创建一个功能,让我网站上的用户可以更改他们的个人资料图片。为了在他们的个人资料页面上显示他们的个人资料图片,我想获取他们的个人资料图片文件夹中的第一张图片。我想获取他们上传的图像,无论文件类型如何。我已经做到了,因此当他们上传新图片时,旧图片将被删除,因此它只是文件夹中的一个文件。我该怎么做?

php image directory user-profile
3个回答
21
投票

您可以像这样获取目录中的第一个文件

$directory = "path/to/file/";
$files = scandir ($directory);
$firstFile = $directory . $files[2];// because [0] = "." [1] = ".." 

然后使用 fopen() 打开,您可以使用 w 或 w+ 模式:

w 仅供书写;将文件指针放在文件的开头 文件并将文件截断为零长度。如果文件没有 存在,尝试创建它。


13
投票
$firstFile = scandir("path/to/file/")[2];

scandir:扫描给定目录并放入数组:[0] = "." [1] =“..”[2] =“第一个文件”


3
投票

如果目录包含很多文件,那么使用 readdir() 应该会更快,因为我们不会将所有文件写入数组:

if ($h = opendir($dir)) {
    while (($file = readdir($h)) !== false) {
        if ($file != '.' && $file != '..') {
            break;
        }
    }
    closedir($h);
}
echo "The first file in $dir is $file";

但是由于 readdir 不返回排序结果,您可能需要将

break
替换为保证最新文件的检查。一种想法是向文件添加增量编号并检查最大编号。或者,您使用最新文件的名称创建一个子文件夹,并为添加到该文件夹的每个新文件删除/创建一个新子文件夹。

© www.soinside.com 2019 - 2024. All rights reserved.