上传图片失败

问题描述:

我在HTML上做了一个表格,上传了一个图片。问题是,当我检查php代码$_FILES数组时,找不到它。上传图片失败

HTML形式:

<form method="POST" action="addProduct.php" onsubmit="return checkValidation()"> 
Image(optional): <input type="file" name="fileImg" accept="image/*" id="fileImg"> 
<input id="submitProduct" type="submit" name="submitBtn" value="Submit product" onclick="checkValidation()"/> 
</form> 

checkValidation()功能:

function checkValidation(){ 
    var regex = /\.(jpg|JGP|jpeg|JPEG|png|PNG|gif|GIF)$/; 
    if (($('#fileImg').val()) && (!(regex.test($('#fileImg').val())))) 
    { 
     return false; 
    } 
} 

而且php代码:

if(isset($_POST["submitBtn"])){ 
    if(!(empty($_FILES))) 
    { 
     if (file_exists('uploads/'.$_FILES["fileImg"]["name"])) 
     { 
      echo $_FILES["fileImg"]["name"]." already exists. "; 
     } 
     else 
     { 
      move_uploaded_file($_FILES["fileImg"]["tmp_name"], 'uploads/'. $_FILES["fileImg"]["name"]); 
      $path = $_FILES["fileImg"]["name"]; 
     } 
    } 
    else 
     $path = 'no_photo.jpg'; 

的问题是,在PHP代码,它总是跳跃到else分支(这给了我很多东西e默认图像)。

在此先感谢。

+0

你的正则表达式接受'JGP'图像? –

+0

不要忘记检查PHP中的文件类型,因为可以轻松地跳过javascript。 if($ _ FILES ['fileImg'] ['type'] =='image/png'|| ...){' – jdepypere

+0

我在checkValidation()函数中显示了我的正则表达式。我可以告诉该函数接受文件,如果我比较文件与此正则表达式。 –

您的表单缺少enctype='multipart/form-data'属性。没有它,$_FILES将永远是空的。

了解更多关于在这里:​​What does enctype='multipart/form-data' mean?

+0

我应该在哪里放置此代码行? –

+0

对不起,愚蠢的问题。我把它放在表格中,它工作。非常感谢! –

+0

@ErumHannan如果您有*新*问题,请通过单击[问问题](http://stackoverflow.com/questions/ask)按钮来提问。如果你有足够的声望,[你可以upvote](http://stackoverflow.com/privileges/vote-up)这个问题。或者,将这个问题“明星”作为最爱,并且您会收到任何新答案的通知。 –