0
我正在試着用一個簡單的文件上傳PHP腳本來處理一些文件有效性檢查。這是一個簡單的W3C示例,其中添加了while循環來檢查文件是否存在,然後在文件名的末尾添加一個增量(僅在文件擴展名之前)。PHP - 如何防止覆蓋文件名增量的現有文件?
該腳本有效,但只會產生1個增量。例如,我上傳了一個名爲'test.jpg'的文件,它上傳了,我重新上傳了同一個文件,腳本生成了'test1.jpg' - 但是在那之後,腳本會繼續重寫'test1.jpg' !
我在這裏可能做錯了什麼?所有的
<?php
$allowedExts = array("ai", "esp", "jpg", "jpeg", "png", "tiff");
$temp = explode(".", $_FILES["file"]["name"]);
$name = pathinfo($_FILES["file"]["name"], PATHINFO_FILENAME);
$extension = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION);
$i = '';
if ((($_FILES["file"]["type"] == "image/ai")
|| ($_FILES["file"]["type"] == "image/esp")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/png")
|| ($_FILES["file"]["type"] == "image/tiff"))
&& ($_FILES["file"]["size"] < 50000000)
&& in_array($extension, $allowedExts))
{
if ($_FILES["file"]["error"] > 0)
{
echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
} else
{
if (file_exists("upload/" . $_FILES["file"]["name"]))
{
while(file_exists("upload/" . $_FILES["file"]["name"] . $i)) {
$i++;
}
$basename = $name . $i . '.' . $extension;
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $basename);
} else
{
move_uploaded_file($_FILES["file"]["tmp_name"],
"upload/" . $_FILES["file"]["name"]);
}
}
} else
{
echo "Invalid file";
}
?>
'$ name。 $ i。 '' 。 $ extension' – mudasobwa 2014-10-02 07:07:04
Oh thx :-)更正以上 – TiMESPLiNTER 2014-10-02 07:09:48
非常棒!隨着更正,腳本現在執行完美。謝謝! – Matthew6 2014-10-02 07:18:28