在PHP中是否有任何漂亮的解決方案,允許我使用自動增量編號擴展文件名,如果文件名已存在?我不想在一些不可讀的東西中重命名上傳的文件。所以我認爲這會是這樣漂亮:PHP文件上傳:保留兩個文件,如果名稱相同
Cover.png
Cover (1).png
Cover (2).png
…
在PHP中是否有任何漂亮的解決方案,允許我使用自動增量編號擴展文件名,如果文件名已存在?我不想在一些不可讀的東西中重命名上傳的文件。所以我認爲這會是這樣漂亮:PHP文件上傳:保留兩個文件,如果名稱相同
Cover.png
Cover (1).png
Cover (2).png
…
首先,讓我們單獨的擴展和文件名:
$file=pathinfo(<your file>);
爲了方便文件檢查和追加,保存的文件名到新的變量:
$filename=$file['filename'];
然後,讓我們來檢查文件是否已經存在,並保存新的文件名,直到它不存在:
$i=1;
while(file_exists($filename.".".$file['extension'])){
$filename=$file['filename']." ($i)";
$i++;
}
在這裏,你有一個原始文件,你的<append something>
還不存在。
編輯: 增加了自動增量編號。
很容易!!! :)但自動增量解決方案更好,我認爲。但是,謝謝! –
已編輯並添加自動增量;) –
您的代碼需要稍微修復。 –
使用file_exists()
功能和rename()
函數來實現你想要做什麼(所有圖像文件是允許的。)!
我是否需要任何正則表達式?當然,我可以檢查原始文件名是否已經存在,但是如果我想上傳另一個Cover.png,我該如何識別已經有多少個? –
明白了:
if (preg_match('/(^.*?)+(?:\((\d+)\))?(\.(?:\w){0,3}$)/si', $FILE_NAME, $regs)) {
$filename = $regs[1];
$copies = (int)$regs[2];
$fileext = $regs[3];
$fullfile = $FILE_DIRECTORY.$FILE_NAME;
while(file_exists($fullfile) && !is_dir($fullfile))
{
$copies = $copies+1;
$FILE_NAME = $filename."(".$copies.")".$fileext;
$fullfile = $FILE_DIRECTORY.$FILE_NAME;
}
}
return $FILE_NAME;
您可以使用['' pathinfo'](http://php.net/manual/en/function.pathinfo.php),而不是正則表達式;這種方法更簡單, –
使用file_exists()函數可以非常簡單地實現這個 –
但是file_exists只能給我提供true或false的代碼... –
你需要照顧更多的東西,先編寫簡單的算法然後在編碼中實現它,你 –