在很多情况下,我们需要在服务器上创建不同的文件名,以防止重复。最常见的答案似乎是,在最后添加时间戳或将文件名存储在数据库中,并使用这些存储的值计算新名称。这些都很好,但是,附加很长的时间戳并不总是非常用户友好,并且存储在数据库中并不总是一种选择。那么,如何在通过php创建标准文件名时自动增加标准文件名呢?如何在php中增加文件名以防止重复
6
A
回答
8
这里有一个简单的功能,我写了这个目的:
function incrementFileName($file_path,$filename){
if(count(glob($file_path.$filename))>0)
{
$file_ext = end(explode(".", $filename));
$file_name = str_replace(('.'.$file_ext),"",$filename);
$newfilename = $file_name.'_'.count(glob($file_path."$file_name*.$file_ext")).'.'.$file_ext;
return $newfilename;
}
else
{
return $filename;
}
}
用法:
$newName = incrementFileName("uploads/", $_FILES["my_file"]["name"]);
move_uploaded_file($_FILES["my_file"]["tmp_name"],"uploads/".$newName);
1
function incrementFileName($file_path,$filename){
$array = explode(".", $filename);
$file_ext = end($array);
$root_name = str_replace(('.'.$file_ext),"",$filename);
$file = $file_path.$filename;
$i = 1;
while(file_exists($file)){
$file = $file_path.$root_name.$i.'.'.$file_ext;
$i++;
}
return $file;
}
6
所有这些问题的答案似乎矫枉过正:
$k = 0;
while(!$result){
if(!file_exists("file[$k].ext"))
$result = "file[$k].ext";
$k++;
}
makefile($result);
相关问题
- 1. 防止重复条目自动增加
- 2. 防止重复而增加设置
- 3. PHP文件上传和防止重复
- 4. vim中的FuzzyFinder - 在Windows中防止重复的文件名
- 5. 如何防止在Linux中重复更改文本文件?
- 6. PHP - 如何防止覆盖文件名增量的现有文件?
- 7. 防止C++文件中的行重复
- 8. 防止重复enteries sql php
- 9. 防止CompileAssemblyFromSource生成重复文件名的临时文件
- 10. 如何防止重复项
- 11. IsolationLevel.RepeatableRead以防止重复
- 12. 如何防止重名?
- 13. 防止添加重复值
- 14. 如何在php中命名上传的文件以防止被覆盖?
- 15. 如何为Django FileField编写文件 - 防止重复文件
- 16. 如何防止在Prestashop中保存名称重复的产品?
- 17. 如何防止在wordpress中加载php文件admin
- 18. 如何防止在php会话数组中输入重复值?
- 19. 在PHP和PDO中创建一个例外以防止重复
- 20. 防止在PHP重复SQL INSERT
- 21. 防止CSS文件的重复?
- 22. 防止下载重复的Javascript文件
- 23. C#SQLite文件导入防止重复
- 24. 是否可以防止在iTunes文件共享中重命名文件?
- 25. 如何防止arraycollection中的重复值?
- 26. 如何防止array_push中的重复键
- 27. 如何防止XSL中的重复项?
- 28. 如何防止重复在angularjs
- 29. Knockout.js:如何防止在表中添加重复项
- 30. 追加到在MySQL表中的条目,以防止重复项