Member 14055869 Ответов: 1

Как установить ограничение максимального количества файлов с помощью PHP, jquery и AJAX


Я пытаюсь Загрузить файл Jquery
<input type="file" name="listingfiles[]" class="file" multiple>


Эта опция загрузки дает много вариантов загрузки файлов . Но я хочу, чтобы это было только 3, чтобы загрузить несколько .Как я установил ограничение (только 3 файла ) максимальных файлов с помощью PHP, jQuery и AJAX. У меня есть файл use 4

Что я уже пробовал:

HTML-файл

<div class="filediv">
       <input type="file" name="listingfiles[]" class="file" multiple min="1" max="3">
    </div>


JAVA-КОД
if (jQuery("input[name='listingfiles[]']").length){
        var lpcount = 0;
        jQuery.each(jQuery("input[name='listingfiles[]']"), function(k, files) {
            jQuery.each(jQuery("input[name='listingfiles[]']")[k].files, function(i, file) {
                if(file.size > 1 || file.fileSize > 1) {
                    fd.append('listingfiles[' + lpcount + ']', file);
                    lpcount++;
                }
            });
        });
    }



AJAX-код

jQuery(document).ready(function($){

'use-strict';

var abc = 1;      // Declaring and defining global increment variable.
$(document).ready(function() {
    if(jQuery('.lp-img-gall-upload-section').length > 0){

        $('body').on('change', '.file', function(event) {
            var files = event.target.files; //FileList object
            var output = document.getElementsByClassName("filediv");
            output = output[0];

            for(var i = 0; i< files.length; i++)
            {
                var file = files[i];
                //Only pics
                if(!file.type.match('image'))
                    continue;

                var picReader = new FileReader();

                picReader.addEventListener("load",function(event){

                    var picFile = event.target;

                    var div = document.createElement("ul");
                    div.className = 'jFiler-items-list jFiler-items-grid grid'+i;
                    div.innerHTML = '<li class="jFiler-item">\
                                    <div class="jFiler-item-container">\
                                        <div class="jFiler-item-inner">\
                                            <div class="jFiler-item-thumb">\
                                                 <img  class="thumbnail" src="'+ picFile.result +'" title="' + picFile.name + '"/>\
                                            </div>\
                                        </div>\
                                    </div><a class="icon-jfi-trash jFiler-item-trash-action"></a>\
                                </li>';

                    output.insertBefore(div,null);
                });
                //Read the image
                picReader.readAsDataURL(file);
            }
            $('.jFiler-item-trash-action').on('click',function() {
                $(this).parent().parent().parent().remove();
            });
            $(output).find('input').hide();
            $(output).before($("<div/>", {
                class: 'filediv'
            }).fadeIn('slow').append($("<input/>", {
                name: 'listingfiles[]',
                type: 'file',
                class: 'file',
                multiple: 'multiple'
            })));
        });
        // To Preview Image
        function imageIsLoaded(e) {
            $('#previewimg' + abc).attr('src', e.target.result);
        };
    }
});
});


PHP-код

if ( isset($_FILES["listingfiles"]) ) {
    if($_FILES['listingfiles']['size'] != 0) {
        $files = $_FILES["listingfiles"];           
        //$files2 = $_FILES["lp-featuredimage"];            
        foreach ($files['name'] as $key => $value) {                            
            if ($files['name'][$key]) {
                $file = array( 'name' => $files['name'][$key],                      
                'type' => $files['type'][$key],                         
                'tmp_name' => $files['tmp_name'][$key],                         
                'error' => $files['error'][$key],                       
                'size' => $files['size'][$key] );                   
                $_FILES = array ("listingfiles" => $file);                  
                $count = 0;                 
                foreach ($_FILES as $file => $array) {  

                    if( $featImgFromGal==true && !isset($_FILES["lp-featuredimage"]) ){
                        $newupload = listingpro_handle_attachment($file,$postID,$set_thu=true);
                    }else{
                        $newupload = listingpro_handle_attachment($file,$postID,$set_thu=false);
                    }                                                       
                    $ids[] =$newupload;
                    $count++;
                }
            }
        }
        if(!empty($ids) && is_array($ids)){
            $img_ids = implode(",", $ids);              
            update_post_meta($postID, 'gallery_image_ids', $img_ids);
            //$_FILES['lp-featuredimage'] = $files2;

        }
    }                                   
}



Есть какие-нибудь предложения о том , как я установил лимит, только 3 файла?

1 Ответов

Рейтинг:
9

Member 14055869

редактирование файла :

<pre> 

if($abirfileSwitch == 1){ 
 if($abirgallery_show=="true"){ 
  $output .='
   <div class="form-group clearfix margin-bottom-0 lp-img-gall-upload-section">
    <div class="col-sm-12 padding-left-0 padding-right-0">
        <label for="postVideo">'.esc_html__('Images ', 'listingpro-plugin').'</label>
        <div class="jFiler-input-dragDrop pos-relative">
            <div class="jFiler-input-inner">
                <div class="jFiler-input-icon">
                    
                </div>
                <div class="jFiler-input-text">
                    <h3 style="margin:20px 0px;">'.$upload_icon.''.esc_html__('Drop max 3 files here or click to upload', 'listingpro-plugin').'</h3>

                </div>
                <a class="jFiler-input-choose-btn blue">
                  '.esc_html__('Browse Files', 'listingpro-plugin').'</a>
                <div class="filediv">
                    <input type="file" name="abirlistingfiles[]" class="file" multiple>
                </div>'; 

$galleryImagesIDS = explode( ',', $galleryImagesIDS ); if(!empty($galleryImagesIDS)){ 
  foreach($galleryImagesIDS as $galID){ 
   $imgFull = wp_get_attachment_image_src( $galID, 'thumbnail');      
    if(!empty($imgFull[0])){ 
    $output.= '<div class="filediv">
                    <ul class="jFiler-items-list jFiler-items-grid grid1">
                        <li class="jFiler-item">
                            <div class="jFiler-item-container">
                                <div class="jFiler-item-inner">
                                    <div class="jFiler-item-thumb">
                                        <img src="'. $imgFull[0] .'" alt="post1" />
                                    </div>
                                </div>
                            </div>
                            <a class="icon-jfi-trash jFiler-item-trash-action">
                           </a>
                            <input name="abirlistingfiles[]" calss="file"   multiple="multiple" value="'.$galID.'" type="hidden">
                        </li>
                    </ul>
                </div>'; 
} 
} 
} 
$output .= '
            </div>
        </div>
    </div>
</div>'; 
} 
}