【发布时间】:2014-11-27 03:32:26
【问题描述】:
我正在尝试一个简单的文件上传 PHP 脚本,并进行一些文件有效性检查。这是一个简单的 W3C 示例,添加了一个 while 循环来检查文件是否存在,然后在文件名的末尾(就在文件扩展名之前)添加一个增量。
脚本有效,但只会产生 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";
}
?>
【问题讨论】:
标签: php file upload overriding increment