仅上传具有特定扩展名的文件

时间:2018-06-01 09:24:39

标签: php mysql validation mysqli

这是我的编辑文件

这是我的$ _POST

<?php 

            if(isset($_POST['submit']) ){

              $id          = $connect->real_escape_string($_POST['id']);
              $name        = $connect->real_escape_string($_POST['name']);
              $description =$connect->real_escape_string($_POST['description']);

              $image    = $_FILES['image'];
              $tmp_file = $_FILES['image']['tmp_name'];
              $file_size= $_FILES['image']['size'];
              $type_file= $_FILES['image'] ['type'];

                  if(edit_portfolio($id, $name, $description, $image)) {#1
                        $type     = "msg-scs";
                        $location = "mp_showdata.php";
                        $message  = "portfolio successfully edited";
                        redirect($type,$location, $message);      
                    }else{#1
                        $type     = "msg-fail";
                        $location = "mp_showdata.php";
                        $message  = "portfolio failed to edit";
                        redirect($type,$location, $message);    
                  }     
          }

      ?>

这是我的功能

function edit_portfolio($id, $name, $description, $image, $type_file){
       global $connect;   
       $filePath = "images/portfolios/".basename($image["name"]);
       move_uploaded_file($image["tmp_name"], $filePath);

  if(!empty($image['name'])){
         $sql = "UPDATE ms_portfolios SET name='$name', description='$description', image='$filePath' WHERE id='$id'";
         if($connect->query($sql) === TRUE)
            return true; else
            return false;
      }else{
         $sql = "UPDATE ms_portfolios SET name='$name', description='$description' WHERE id='$id'";
         if($connect->query($sql) === TRUE)
            return true; else
            return false; 
      }
  }

?>

这是我的HTML

<div class="form-group">
<label><?php echo "old image <span style=color:red>$row->image</span>" ?></label>
<input type="file" name="image">
<input type="hidden" name="temp_img" value="<?php echo $row->image ?>">
<input type="hidden" name="id" value="<?php echo $row->id ?>">
</div>  

我的问题是,我必须将代码php放在允许的文件中,只有jpg,png,jpeg。 我已尝试过该功能,并在$ _POST中进行了许多实验

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

你可以做两件事。第一个(客户端)是网页上的文件输入元素使用accept属性,因此浏览器会将用户限制为指定的文件类型(https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-accept)。 服务器端需要检查实际文件 - 而不是扩展名。您可以使用pathinfo()(php check file extension in upload form