isset($ _Files)不起作用

时间:2014-03-22 04:24:59

标签: php

问题是$ _FILES [' thumbnailPic']没有从HTML表单中选择值。我已经尝试了很多解决方案,但它只是不工作:( HTML代码是:

    <label >Thumbnail Picture<text>*</text></label><br>
    <input type="file" name='thumbnailPic' id="pic"><br>
    <label >Original Picture<text>*</text></label><br>
    <input type="file" name='originalPic' id="pic"><br>
    <input  type="submit" name="AddStock" id= "formAddStock" value="Add Stock">

php代码是:

if(!isset($_FILES['thumbnailPic']))
    {
     echo '<p>Please select a file</p>';

}
    else
    {
  $spID=NULL;
$Quant=$_POST['quantity'];
$Siz=$_POST['Size'];

    $imgfp = fopen($_FILES['originalPic']['tmp_name'],'rb');
 $stmt = $connection->prepare("INSERT INTO stitchedproduct (sp_id,quantity,size,p_id,color_id,sp_thumbnail,sp_OriginalPic) VALUES (?,?, ?, ?,?,?,?)");
    $stmt->bindParam(1, $spID);
    $stmt->bindParam(2, $Quant);
    $stmt->bindParam(3, $Siz);
    $stmt->bindParam(4, $ProductID);
    $stmt->bindParam(5, $colour);
      $stmt->bindParam(6, $imgfp);
    $stmt->bindParam(7, $imgfp);
    //$stmt->bindParam(1, $spID);


     $stmt->execute();
    }

3 个答案:

答案 0 :(得分:9)

首先验证<form>中的HTML代码中是否添加了enctype="multipart/form-data" 所以你的表单开始就像:

<form action="" method="post" enctype="multipart/form-data">

要检查文件是否已成功上传,请使用。

if($_FILES["thumbnailPic"]["error"] == 0){
    //File uploaded
}

提示: 要检查上传的文件是否为图像,您可以将其检查为:

if(getimagesize($_FILES["thumbnailPic"]["tmp_name"])){
    //Its an Image
}
else
{
    //Invalid Image
}

请参阅here了解更多

答案 1 :(得分:2)

检查文件是否已上传:

if (file_exists($_FILES['file_name']['tmp_name']) || is_uploaded_file($_FILES['file_name']['tmp_name'])) {
    echo 'Your file has been uploaded';
}
else
{
    echo 'Please Select file to Upload';
}

为我工作100%。

答案 2 :(得分:1)

针对此问题的几种可能性和解决方案。

  • 您必须在表单中使用enctype =“multipart / form-data。
  • 检查我们的php.ini文件中的post_max_size和upload_max_filesize。 如果要上传的图像大小大于存储的值 post_max_size和upload_max_filesize,然后文件将无法获取 上传
  • 您可以使用检查文件中的错误 $ _FILES [ “thumbnailPic”] [ “错误”]