图像文件的下拉框目录已按字母大小写收集变体,例如:
Bonsai.jpg, BONSAI.jpg, Bonsai.JPG, bonsai.jpg
我正在使用CodeIgniter创建一个Web应用程序来管理远程服务器上的这些文档。这意味着使用
但是无论如何,这两个工具都会使用他们找到的第一个匹配项。我怎么处理这个?
(我注意到了这个similar question as this,但对于Delphi而不是PHP。)
答案 0 :(得分:1)
但这两种工具都使用了他们找到的第一个匹配,无论大小写
他们绝对不应该 - 至少不是在区分大小写的文件系统上,比如Linux的默认文件系统(它仍称为ext2?)。虽然将这四个文件放在同一目录IMO中是有问题的做法,但file_exists()
和Web资源的提供都不应显示您描述的行为。
在Windows上有所不同:FAT和NTFS不区分大小写。在您的示例中,您提到的四个文件中只有一个可以存在于同一目录中。
答案 1 :(得分:1)
接受图像时,我总是将它们重命名,例如使用文件上传类的CI的加密文件名选项来避免这些问题。否则它会变得很头疼。
编辑:在下面的OP中添加我的评论
您可以轻松编写一个脚本,将所有文件名放入数组中,识别重复项并将_1附加到其名称中。现在你只有独特的文件名。然后将全部转换为小写。对于所有现有文件和新文件,您将文件名加密为32个字符的字符串。这样的文件名的批处理实际上非常简单。只是保留所有文件的备份以防万一,并且很少会出错。
Codeigniter有一些有用的功能,比如文件助手的get_filenames()
将所有文件放在指定的目录中,而安全助手的dohash()
会加密文件名。对于将来的上传,请将encrypt_name
首选项设置为TRUE