用php重命名文件夹中的重复文件
Posted
技术标签:
【中文标题】用php重命名文件夹中的重复文件【英文标题】:Renaming duplicate files in a folder with php 【发布时间】:2012-06-17 00:40:55 【问题描述】:谁能帮我解决以下问题?这是问题所在:我以 POST 的形式让人们可以上传文件。下面的代码检查“上传”文件夹中是否有另一个同名文件。如果是这样,文件被重命名为这个例子:
hallo.txt
1_hallo.txt
2_hallo.txt
...等等。
这是使用的代码:
$OriginalFilename = $FinalFilename = $_FILES['uploaded']['name'];
// rename file if it already exists by prefixing an incrementing number
$FileCounter = 1;
while (file_exists( 'uploads/'.$FinalFilename ))
$FinalFilename = $FileCounter++.'_'.$OriginalFilename;
我想以不同的方式重命名文件。渐进式数字应该在文件之后,当然,在扩展之前。这是以前的相同示例,但以我想要的方式:
hallo.txt
hallo_1.txt
hallo_2.txt
...等等。
如何修改代码以达到该结果? 提前感谢您,并对我的新手式问题感到抱歉。我真的是新手! :)
垫子
【问题讨论】:
只是切换字符串连接?除非我错过了什么。 @EvanMulawski 是的,扩展 @DanLee 啊,就是这样。我觉得这太简单了。 【参考方案1】:只需更改$FinalFilename
:
$FinalFilename = pathinfo($OriginalFilename, PATHINFO_FILENAME) . '_' . $FileCounter++ . '.' . pathinfo($OriginalFilename, PATHINFO_EXTENSION);
或者(如果你有很多同名的文件并且经常迭代不止一次,那就更好了):
$filename = pathinfo($OriginalFilename, PATHINFO_FILENAME);
$extension = pathinfo($OriginalFilename, PATHINFO_EXTENSION);
while (file_exists( 'uploads/'.$FinalFilename ))
$FinalFilename = $filename . '_' . $FileCounter++ . '.' . $extension;
【讨论】:
非常感谢。我已经测试了这两个建议,但在这两种情况下,新文件的扩展都缺少一些东西。如果我使用第一行,则扩展完全丢失。在第二个代码中,重复文件存储在文件名和扩展名之间没有点。 :) @mattew 啊,是的,我忘了把.
放在他们两个里面。他们现在应该可以工作了:)
是的,是的,非常感谢,我确实找到了丢失的“。”在代码中,现在完美运行!我决定使用您建议的第二个代码。你真的很棒。谢谢!!!以上是关于用php重命名文件夹中的重复文件的主要内容,如果未能解决你的问题,请参考以下文章