Php 多图像上传验证javascript

Php 多图像上传验证javascript,php,javascript,Php,Javascript,我使用php代码进行多文件上传。它工作得很好。但是,当我们在不上传任何文件的情况下单击submit按钮时,它会显示成功并以值0的形式存储在数据库中。我尝试了一些javascript验证“请上传图像”。但仍在努力 有人能帮我吗 这是代码 > <?php if(isset($_FILES['files'])){ $errors= array(); foreach($_FILES['files']['tmp_name'] as $key => $tmp_

我使用php代码进行多文件上传。它工作得很好。但是,当我们在不上传任何文件的情况下单击submit按钮时,它会显示成功并以值0的形式存储在数据库中。我尝试了一些javascript验证“请上传图像”。但仍在努力

有人能帮我吗

这是代码

>   <?php
    if(isset($_FILES['files'])){
     $errors= array();
    foreach($_FILES['files']['tmp_name'] as $key => $tmp_name ){
        $file_name = $key.$_FILES['files']['name'][$key];
        $file_size =$_FILES['files']['size'][$key];
        $file_tmp =$_FILES['files']['tmp_name'][$key];
        $file_type=$_FILES['files']['type'][$key];  
        if($file_size > 2097152){
            $errors[]='File size must be less than 2 MB';
        }
        $query="INSERT into upload_data (`USER_ID`,`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`) VALUES('$user_id','$file_name','$file_size','$file_type'); ";
        $desired_dir="gallery";
        if(empty($errors)==true){
            if(is_dir($desired_dir)==false){
                mkdir("$desired_dir", 0700);        // Create directory if it does not exist
            }
            if(is_dir("$desired_dir/".$file_name)==false){
                move_uploaded_file($file_tmp,"gallery/".$file_name);
            }else{                                  //rename the file if another one exist
                $new_dir="gallery/".$file_name.time();
                 rename($file_tmp,$new_dir) ;               
            }
            mysql_query($query) or die(mysql_error());          
        }else{
                print_r($errors);
        }
     }
    if(empty($error)){
        echo "Success";
    }
    }
    ?>
您可以将第一行中的if(isset())与if(!empty())交换,以检查是否已上载任何文件

在客户端,您可以将参数“required”添加到

这是我的第一个想法


我建议重新编写脚本以使用异常:

<?php
if(!empty($_FILES['files']))
{

    try
    {

        foreach($_FILES['files']['tmp_name'] as $key => $tmp_name )
        {
            $file_name = $key.$_FILES['files']['name'][$key];
            $file_size =$_FILES['files']['size'][$key];
            $file_tmp =$_FILES['files']['tmp_name'][$key];
            $file_type=$_FILES['files']['type'][$key];

            if($file_size > 2097152)
                throw new Exception('File size must be less than 2 MB');

            $query="INSERT into upload_data (`USER_ID`,`FILE_NAME`,`FILE_SIZE`,`FILE_TYPE`) 
                    VALUES(
                     '". intval($user_id) ."',
                     '". stripslashes(mysql_real_escape_string($file_name)) ."',
                     '". intval($file_size). "',
                     '". stripslashes(mysql_real_escape_string($file_type)) ."'); ";
            $desired_dir="gallery";

            if(is_dir($desired_dir)==false)
            {
                mkdir("$desired_dir", 0700);        // Create directory if it does not exist
            }

            if(is_dir("$desired_dir/".$file_name)==false)
            {
                move_uploaded_file($file_tmp,"gallery/".$file_name);
            }
            else
            {
                //rename the file if another one exist
                $new_dir="gallery/".$file_name.time();
                rename($file_tmp,$new_dir) ;               
            }

            if (!mysql_query($query))
             throw new Exception(mysql_error());
        }

        echo "Success";
    }
    catch (Exception $e)
    {
        print_r($e->getMessage());
    }
}
else
{
    echo "No files uploaded";
}

我尝试了一些javascript验证“请上传图像”

您可以添加Javascript验证,但如果您的浏览器支持

Javascript

$(文档).ready(函数(){
if(window.FormData){
$('input[type=“file”]”)。绑定({
更改:函数()
{
var输入=此,
files=input.files;
如果(files.length>0){
var regExp=new regExp('image.(jpeg | jpg | gif | png)'i');
对于(var i=0;i

$(函数(){
$('#Image').bind('change',function()){
var a=(this.files[0].size);
如果((a/1048576)>2.048){
警报('您的文件大小不应超过2MB');
};
});
$('#btnsupmit')。单击(函数(){
var fileExtension=['png','jpg','jpeg'];
if($.inArray($(this.val().split('.').pop().toLowerCase(),fileExtension)=-1){
警报(“仅允许Png、jpeg和jpg图像文件”);
返回false;
}
其他的
返回true;
})
})

不要忘记在mysql查询中正确转义用户输入。我已经更新了我的答案
$(document).ready(function() {
  if (window.FormData) {
      $('input[type="file"]').bind({
          change : function()
          {
              var input = this,
              files = input.files;

              if (files.length > 0) {
                  var regExp = new RegExp('image.(jpeg|jpg|gif|png)', 'i');
                  for (var i = 0; i < files.length; i++)
                  {
                      var file = file = files[i];
                      var matcher = regExp.test(file.type);

                      if (!matcher)
                      {
                          alert('invalid file');
                      }
                  }
              } else {
                  alert('please add 1 file');
              }   
          }
      });
  } else {
      alert('Browser not support Formdata');
  }
});
<script type="text/javascript">
    $(function () {
        $('#Image').bind('change', function() {
            var a=(this.files[0].size);
            if((a/1048576) > 2.048) {
                alert('Your file size should not exceed 2 Mb.');
            };
        });
        $('#btnSubmit').click(function () {
            var fileExtension = ['png', 'jpg', 'jpeg'];
            if ($.inArray($(this).val().split('.').pop().toLowerCase(), fileExtension) == -1) {
                alert("Only Png,jpeg and jpg  image files allowed");
                return false;
            }
            else
                return true;
        })
    })
</script>