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

9

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

我正在尝试创建一个函数,使网站上的用户可以更改其个人资料图片。为了在他们的个人资料页面上显示他们的个人资料图片,我想要获取他们个人资料图片文件夹中的第一张图片。我想要获取他们上传的图片,而不管文件类型如何。我已经做到了当他们上传新图片时旧图片将被删除,所以文件夹中只有一个文件。怎么做呢?


听起来好像只有一张图片。你可以使用glob('*')获取文件数组并选择第一个(也是唯一的)文件。 - user2182349
你能分享一下你尝试过什么或者需要什么帮助吗?SO并不是一个“替我完成”的地方。 - DaGhostman Dimitrov
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] = "第一个文件"


为什么[2]是第一个文件?这些锅具体代表什么意思? - skm
1
在大多数非Windows系统中,'.'和'..'表示“当前文件夹”和“上级文件夹”。它们在scandir中排在第一位,使得列表中的第一个“正常”文件成为第三个。 - David Amey

2

如果目录含有更多的文件,使用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替换为检查最新文件的保证。一种想法是为文件添加递增编号并检查最高编号。或者,您可以创建一个名为最新文件名的子文件夹,并为添加到文件夹中的每个新文件删除/创建一个新的子文件夹。

最初的回答:


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接