AjaxFileUpload插件不检索$ _POST数据

时间:2010-09-13 11:08:49

标签: php javascript jquery file-upload

I faced a few days ago这几乎是完全相同的问题。我当时修好了,但现在它不再工作了。好吧,其中一些有效。

我正在使用AjaxFileUpload Plugin上传WP插件中的文件。此插件调用uploader.php来处理上传表单。

我可以使用$_FILES['uploadFile']获取文件名(和其他数据),但我无法检索$_POST['current_path']数据。

我有一个理论。当我加载接口以上传数据时,隐藏的输入字段'current_path'为空(应该是)。当我浏览我的文件夹时,使用jQuery更新隐藏的输入字段。

当我点击上传按钮时,Ajax文件上传插件会获取上传表单中的数据,并将数据传递到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 个答案:

答案 0 :(得分:3)

  

但为什么我能从$ _FILES而不是从$ _POST获取数据?

因为您没有提交表单,只有文件输入元素。

这似乎是插件的行为by design

  

在这个被黑客入侵的版本中,它只提交输入元素的指定文件类型而不是整个表单

jQuery form plugin可以做到这两点,也许有帮助。