Плагин AjaxFileUpload не получает данные $ _POST - PullRequest
0 голосов
/ 13 сентября 2010

Это почти идентичная проблема, с которой я столкнулся несколько дней назад . Я исправил это тогда, но теперь он больше не работает. Ну, кое-что из этого работает.

Я использую AjaxFileUpload Plugin для загрузки файлов в мой плагин WP. Этот плагин вызывает uploader.php для обработки формы загрузки.

Я могу получить имя файла (и другие данные), используя $_FILES['uploadFile'], но я не могу получить данные $_POST['current_path'].

Хотя у меня есть теория. Когда я загружаю интерфейс для загрузки данных, скрытое поле ввода 'current_path' пусто (как и должно быть). При навигации по папкам скрытое поле ввода обновляется с помощью jQuery.

Когда я нажимаю кнопку загрузки, плагин Ajax File Upload получает данные из формы загрузки и передает данные в uploader.php через $_POST и $_FILES.

Но почему я могу получать данные с $_FILES, а не с $_POST?

Вот мой код:

Javascript

  //File upload functions
  // Remove feedback message on upload click 
    jQuery('.uploadImage').live('click',function() {
      ajaxFileUpload();
  });

  (...)

  //Lets upload the file by using Ajax uploader plugin
  function ajaxFileUpload() {
    alert(jQuery('input[type=hidden][name=current_path]').val()) //Shows me the correct current path   
    jQuery.ajaxFileUpload ( {
        url:'../wp-content/plugins/wp-filebrowser/uploader.php', 
        secureuri:false,
        fileElementId:'uploadFile',
        dataType: 'json',
        success: function (data) {
          if(data.error != '') {
              alert(data.error);
          } else {
              alert(data.respons);
          } 
        },
        error: function (e) {
            jQuery('#uploadOutput').addClass('error').html('Error: ' + e).show();
        },
        complete: function() {
          // Update file list
        }
      }
    )
    return false;   
  }

HTML

<form id="uploadForm" enctype="multipart/form-data" action="" method="POST">
    <input type="hidden" id="current_path" name="current_path" value="<?php echo $fb->relative_url; ?>" />
    <input id="uploadFile" name="uploadFile" type="file" />
    <input type="button" class="button uploadImage" value="<?php _e('Upload File') ?>" /> <br />
</form>

PHP

$this->current_path   = $_POST['current_path'];
$this->data['error']  = $_FILES['uploadFile']['name']; //Just for testing
$this->data['respons'] = "Filename: ".$_POST['current_path']; 

echo json_encode($this->data);  

1 Ответ

3 голосов
/ 13 сентября 2010

Но почему я могу получать данные из $ _FILES, а не из $ _POST?

Поскольку вы не отправляете форму, используется только элемент ввода файла.

Кажется, что поведение плагина по замыслу :

В этой взломанной версии она отправляет только указанный тип файла входного элемента, а не всю форму

Плагин jQuery для форм может выполнять обе функции, может быть, это поможет.

...