AjaxFileUpload Plugin does not retrieve $_POST data

This is almost identical problem which I faced a few days ago. I fixed it then, but now it's not working any more. Well, some of it works.

I'm using AjaxFileUpload Plugin to upload files in my WP plugin. This plugin calls uploader.php to process the upload form.

I am able to get the filename (and other data) using $_FILES['uploadFile'], but I'm not able to retrieve $_POST['current_path'] data.

I have a theory though. When I load the interface to upload data, the hidden input field 'current_path' is empty (as is hould be). As I navigate through my folders, the hidden input field is updated using jQuery.

When I hit the upload button, the Ajax File Upload plugin takes the data in the upload form and passes the data to uploader.php through $_POST and $_FILES.

But why am I able to get data from $_FILES and not from $_POST?

Here is my code:

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);  

Answers:

Answer

But why am I able to get data from $_FILES and not from $_POST?

Because you are not submitting the form, only the file input element.

It seems to be the plugin's behaviour by design:

In this hacked version, it submits the specified file type of input element only rather than an entire form

The jQuery form plugin can do both, maybe that helps.

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us Javascript

©2020 All rights reserved.