【问题标题】:Get first file in directory PHP获取目录 PHP 中的第一个文件
【发布时间】:2016-01-31 12:12:08
【问题描述】:

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

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

【问题讨论】:

  • 听起来好像只有一张图片。您可以使用 glob('*') 获取文件数组并选择第一个(也是唯一一个)文件。
  • 你能分享你尝试过的或需要帮助的地方吗? SO 不是“为我而做”的地方

标签: php image directory user-profile


【解决方案1】:

随着目录包含的文件越多,使用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 does not return a sorted result,您可能需要替换break,以检查确保最新文件。一个想法是为您的文件添加一个增量编号并检查最高编号。或者,您使用最新文件的名称创建一个子文件夹,然后为添加到该文件夹​​的每个新文件删除/创建一个新的子文件夹。

【讨论】:

    【解决方案2】:
    $firstFile = scandir("path/to/file/")[2];
    

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

    【讨论】:

    • 为什么[2]是第一个文件?这些花盆是什么意思?
    • @skm 在大多数非 Windows 系统上 '.'和“..”是指“此文件夹”和“父文件夹”。 scandir 将它们列在首位,使第一个“普通”文件成为列表中的第三个。
    【解决方案3】:

    你可以像这样在目录中获取第一个文件

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-29
      • 1970-01-01
      • 1970-01-01
      • 2015-05-04
      • 2012-04-27
      相关资源
      最近更新 更多