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);开发者_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.
精彩评论