开发者

AjaxFileUpload Plugin does not retrieve $_POST data

开发者 https://www.devze.com 2023-01-16 03:03 出处:网络
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.

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);开发者_C百科
          } 
        },
        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);  


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.

0

精彩评论

暂无评论...
验证码 换一张
取 消