我需要在此代码中进行编辑,即使没有选择图像,我也需要提交表单。 当我提交表格时没有选择图像我得到了这个错误"未知的扩展名!",因为我想提交没有图像的其余数据
<?php
$session_id='1'; //$session id
define ("MAX_SIZE","9000");
function getExtension($str)
{
$i = strrpos($str,".");
if (!$i) { return ""; }
$l = strlen($str) - $i;
$ext = substr($str,$i+1,$l);
return $ext;
}
$valid_formats = array("jpg", "png", "gif", "bmp","jpeg");
if(isset($_POST) and $_SERVER['REQUEST_METHOD'] == "POST")
{
$uploaddir = "uploads/"; //a directory inside
foreach ($_FILES['photos']['name'] as $name => $value)
{
$filename = stripslashes($_FILES['photos']['name'][$name]);
$size=filesize($_FILES['photos']['tmp_name'][$name]);
//get the extension of the file in a lower case format
$ext = getExtension($filename);
$ext = strtolower($ext);
if(in_array($ext,$valid_formats))
{
if ($size < (MAX_SIZE*1024))
{
$image_name=time().$filename;
echo "<img src='".$uploaddir.$image_name."' width='50px' height='50px' class='imgList'>";
$newname=$uploaddir.$image_name;
if (move_uploaded_file($_FILES['photos']['tmp_name'][$name], $newname))
{
$time=time();
$ad_id=$_POST['ad_id'];
mysql_query("INSERT INTO user_uploads(image_name,user_id_fk,created,ad_id) VALUES('$image_name','$session_id','$time','$ad_id')");
}
else
{
echo '<span class="imgList">You have exceeded the size limit! so moving unsuccessful! </span>';
}
}
else
{
echo '<span class="imgList">You have exceeded the size limit!</span>';
}
}
else
{
echo '<span class="imgList">Unknown extension!</span>';
}
}
}
?>
答案 0 :(得分:2)
您的代码正在寻找不存在的文件扩展名。那是错误。如果您不想要图像,只有在提交图像时才进行检查。
您可以将图片代码包装在此:
if(isset($_FILES['photos']) && $_FILES['photos']['size'] > 0){
}
此代码检查是否有文件上传到临时目录,以及是否大小超过0.如果没有上传文件,PHP默认返回大小为0.
正如Alexis_user的评论中所述,您的查询需要移到此if语句之外,以确保它继续运行。但是,如果您在查询中需要图像,则插入可能是错误的。
您可以将查询保留在原来的位置,只需添加第二个查询:
if(isset($_FILES['photos']) && $_FILES['photos']['size'] > 0){
//Do image stuff and query
}else{
//Do query without image.
}