【问题标题】:php check if a file is in a folderphp 检查文件是否在文件夹中
【发布时间】:2013-03-12 21:49:27
【问题描述】:

我正在编写一个要保存徽标图像的脚本。我为每个用户创建一个“logo”文件夹,例如用户数据/user_1/logo/img007.png

如果用户决定在一段时间后上传不同的图像,我想自动删除旧的图像,以免不必要地浪费网络空间。

到目前为止,我决定在上传过程中不重命名文件,因此我不能在文件夹中使用 file_exists(),因为脚本不知道文件名。

我的问题是,PHP 中是否有办法检查特定文件夹中是否有任何文件,如果有,则将其删除。

如果您认为我对此采取了错误的方法并且应该例如将所有文件重命名为相同(我认为这是一个问题,因为我允许 4 种不同的常见图像格式)或保存“现有”文件的文件名并让脚本检查它,请告诉我。

【问题讨论】:

  • 在手册中查找glob()opendir() / readdir()scandir()
  • 为什么不重命名文件?如果您知道要查找的位置,事情就会变得容易得多。
  • 不重命名文件也会给您的服务器带来安全问题。
  • 所以你认为我应该重命名像 logo.jpg 这样的文件(根据原始文件的扩展名),然后在一个循环中检查一个名为 logo 的文件是否为 .png、.gif、. jpg, .jpeg 是否存在于具体文件夹中?
  • 我建议使用命名函数,它将用户的 ID 设置为图像名称。然后,如果该用户决定更新图像,将保留其文件名,而无需经过 2-3 个不同的过程(上传、删除、重新上传)。为什么不能重命名?有什么特殊原因吗?

标签: php file-upload file-io directory


【解决方案1】:

我会创建一个文件夹user_logos/ 并将每个徽标存储为[user name]_logo.png。您显然可以决定延期。但我宁愿没有数千个目录,每个目录只包含一个文件。

如果您可以为每个徽标创建一个随机ID,例如[random_id]_logo.png并将该ID存储到用户表中(在数据库中),那就更好了:

    User ID     |     User Name     |    Logo ID

然后从那里加载它。

【讨论】:

  • 好的,所以方法是以某种自动方式重命名文件,将文件名保存在用户数据库中,如果用户更新,则使用 file_exists() 检查该名称。由于可能的扩展名不同,我在重命名时犹豫不决,但我想如果我将带扩展名的文件名完全保存在数据库中,应该没有问题。谢谢!
【解决方案2】:

您可以使用readdirscandir

【讨论】:

    猜你喜欢
    • 2012-02-05
    • 2010-11-08
    • 2011-02-12
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-20
    相关资源
    最近更新 更多