0

我使用 php 代码进行多个文件上传。它运作良好。但是,当我们单击提交按钮而不上传任何文件时,它显示成功并存储在数据库中作为值 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";
    }
    }
    ?>
4

3 回答 3

0

我为“请上传图片”尝试了一些 javascript 验证。

您可以添加 Javascript 验证,但如果您的浏览器支持 H TML 5 Javascript API - FormData

Javascript

http://jsfiddle.net/dimitardanailov/98VeF/1/

$(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');
  }
});
于 2013-07-07T07:09:22.153 回答
0
<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>
于 2014-02-26T11:30:37.287 回答
0

您可以在第一行将 if(isset()) 与 if(!empty()) 交换,以检查是否已上传任何文件。

在客户端,您可以将参数“必需”添加到 <input type=file>

这是我的第一个想法


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

<?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";
}
于 2013-07-07T06:40:05.307 回答