我正在做php上传多个文件并重命名它们。所以我使用数组输入字段名称并使用for循环将每个文件重命名为date + ordinal number suffix。
我也验证了文件类型,它可以防止成功上传其他文件类型到目录。但它仍然将文件名插入数据库。我的代码有什么问题?
<form action="upload.php" method="post" enctype="multipart/form-data">
Username :
<input type="text" name="username" />
Image 1 :
<input type="file" name="images[]" />
<br>
image 2 :
<input type="file" name="images[]" />
</form>
在upload.php页面
if(isset($_POST['submit']))
{
$count=count($_FILES["images"]["name"]);
$arr_newname = array();
for($i=1; $i <= $count; $i++)
{
if ((($_FILES["images"]["type"][$i-1] == "image/gif")
|| ($_FILES["images"]["type"][$i-1] == "image/jpeg")
|| ($_FILES["images"]["type"][$i-1] == "image/png"))
&& ($_FILES["images"]["size"][$i-1] < 2000000)) //2 MB
{
if ($_FILES["images"]["error"][$i-1] > 0)
{
echo "File Error : " . $_FILES["images"]["error"][$i] . "<br />";
}
else
{
if (file_exists("path/to/".$_FILES["images"]["name"][$i-1] ))
{
echo "<b>".$_FILES["images"]["name"][$i-1] . " already exists. </b>";
}
else
{
$newname = date('Y-m-d')."_".$i.".jpg";
$arr_newname[$i-1] = $newname;
move_uploaded_file($_FILES["images"]["tmp_name"][$i-1] , "path/to/".$newname);
$data = array(
'username' => $_POST['username'],
'my_pic'.$i => $arr_newname[$i-1],
);
$this->db->insert('oav_album', $data);
}
}
}
else
{
echo "Invalid file" ;
exit();
}
}
}