代码之家  ›  专栏  ›  技术社区  ›  Smandoli

使用PHP列出图像文件并区分大小写

  •  0
  • Smandoli  · 技术社区  · 14 年前

    Bonsai.jpg, BONSAI.jpg, Bonsai.JPG, bonsai.jpg  
    

    1. 是\文件() 验证

    但这两种工具都使用它们找到的第一个匹配项,而不管情况如何。我该怎么处理?

    similar question as this ,但是对于Delphi而不是PHP。)

    2 回复  |  直到 7 年前
        1
  •  1
  •   Pekka    14 年前

    但这两种工具都使用它们找到的第一个匹配项,而不管情况如何

    它们绝对不应该——至少在区分大小写的文件系统上是不应该的,比如Linux的默认文件系统(仍然称为ext2?)。虽然将这四个文件放在同一个目录中是一种值得怀疑的做法,但两者都不是 file_exists() 网络资源的服务也不应该显示你所描述的行为。

        2
  •  1
  •   stef    14 年前

    当接受图像时,我总是重命名它们,例如使用File Upload类的CI的encrypt filenames选项来避免此类问题。否则它会变成一个很大的头痛。

    编辑:在下面的评论中添加了我的评论

    您可以很容易地编写一个脚本,将所有文件名放入一个数组中,识别重复的文件名,并在它们的名称后面附加1。现在您只有唯一的文件名。然后你把所有的都转换成小写。对于所有现有文件和新文件,将文件名加密为32个字符的字符串。像这样的文件名批处理实际上相当容易。只需备份所有文件,以防万一,很少会出错。

    Codeigniter有一些有用的函数,比如文件助手的 get_filenames() 它将指定目录中的所有文件放入一个数组中,以及安全助手的 dohash() 它会加密文件名。为将来上传设置 encrypt_name TRUE