$ _FILES массив пуст - PullRequest
       1

$ _FILES массив пуст

0 голосов
/ 20 марта 2012

Это первый раз, когда я пытаюсь загрузить файл, и по какой-то причине мой массив $ _FILES пуст.Я проверял снова и снова мой HTML, и он выглядит хорошо для меня.Когда я пытаюсь отладить приведенный ниже код в eclipse, массив $ _Files пуст, когда я проверяю его.Я проверил файл php_ini, который у него есть:

  • file_uploads = On
  • upload_max_filesize = 2M

Форма находится в модном окне fancybox.Мой HTML выглядит следующим образом:

<form  action="/CiREM/attachments/addAttachmentsModal.php?requestId=120" enctype="multipart/form-data" method="post" id="addattachment" name="addattachment" class="form-vertical" autocomplete="off">
        <input type='hidden' id='requestId' name='requestId' value="120"/>
        <input type='hidden' id='listScreen' name='listScreen' value=""?>   
        <input type='hidden' name='MAX_FILE_SIZE' value='4000000' /><br/> <strong>Max File size Allowed: </strong>4 Mb <br/><strong>File Formats Allowed: </strong>gif,jpeg,jpg,png<br/><hr/>               <div class="control-group">


                <div class="controls input">
                    <input class="input-file" type="file" name="upload_file[]" id="upload_file[]"/><br/>
                </div>
                </div>
                    <input class="input-file" type="file" name="upload_file[]" id="upload_file[]"/><br/>
                </div>
                </div>
                    </div>
                    <div class ="clear"></div>
                        <input id="addAttachmentsBtn" type="submit" class="btn btn-primary btn-large" value="Add Attachments"/>
                    </form>         

Мой PHP

<form  action="<?php echo $_SERVER['PHP_SELF']."?requestId=".$requestId?>" enctype="multipart/form-data" method="post" id="addattachment" name="addattachment" class="form-vertical" autocomplete="off">
        <input type='hidden' id='requestId' name='requestId' value="<?php echo $requestId;?>"/>
        <input type='hidden' id='listScreen' name='listScreen' value="<?php echo $listScreen;?>"?>  
        <?php 
        if ($CIREM['MAX_IMG_NUM']>0){
            echo "<input type='hidden' name='MAX_FILE_SIZE' value='".$CIREM['MAX_IMG_SIZE']."' />";
            echo "<br/> <strong>Max File size Allowed: </strong>".($CIREM['MAX_IMG_SIZE']/1000000)." Mb <br/><strong>File Formats Allowed: </strong>".$CIREM['IMG_TYPES']."<br/><hr/>";?>

        <?php   for ($i=1;$i<=$CIREM['MAX_IMG_NUM'];$i++){?>


                <div class="controls input">
                    <input class="input-file" type="file" name="upload_file[]" id="upload_file[]"/><br/>
                </div>

            <?php }?>

        <?php }
        else{
            echo "<p class='alert alert-info'>Attachment uploading is not allowed</p>";
        }
        ?>

Любая помощь будет принята с благодарностью.

Спасибо, Шакира

Ответы [ 2 ]

0 голосов
/ 24 марта 2016

Прежде всего, извините за поздний ответ, но так как иногда люди натыкаются на старые темы по stackoverflow, я решил написать, как это работает для меня.

Итак, для отправки файлов через ajax вы должны использовать FormData.

Я вставлю ссылку на проект github. Мне нужно отправить формы через ajax, чтобы вы могли проверить рабочий пример и вставить сюда фрагмент.

Ссылка: https://github.com/pihh/auto-ajax-form

Код:

$( "form" ).on('submit',function( event ) {
        if($(this).attr('ajax')){
            event.preventDefault();
            var marianaFormUrl = $(this).attr('action');
            var marianaFormId = $(this).attr('id');
            var marianaFormMethod = $(this).attr('type');
            var marianaFormSucess = $(this).attr('success');
            var marianaFormComplete = $(this).attr('complete');
            var marianaFormBefore = $(this).attr('before');
            var marianaFormInputs = $('#' + marianaFormId +' :input');
            var marianaEncType = $(this).attr('enctype');
            var marianaFormData = {};

            // Set enctype
            if(marianaEncType === undefined || marianaEncType == ''){
                $(this).attr('enctype','multipart/form-data');
            }

            // Run Ajax Call
            $.ajax({
                url: marianaFormUrl,
                type: marianaFormMethod,
                dataType: 'JSON',
                data: new FormData( this ),
                processData: false,
                contentType: false,
                cache: false,
                success:function(data){
                    // Run success
                    if(marianaFormSucess !== undefined && marianaFormSucess !== ''){
                        var fn = marianaFormSucess;
                        var func = fn +'( data )';
                        eval(func);
                    }
                },
                complete:function(data){
                    // Run complete
                    if(marianaFormComplete !== undefined && marianaFormComplete !== ''){
                        var fn = marianaFormComplete;
                        var func = fn +'( data )';
                        eval(func);
                    }
                }
            });
        }
    });

Вот и все, с помощью formData он отлично отправляет файлы.

0 голосов
/ 20 марта 2012

Не просматривая этот код спагетти, сначала проверьте, пуст ли ваш $ _POST.

Если это так, убедитесь, что post_max_size больше, чем upload_max_filesize.Две настройки должны совпадать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...