AjaxUpload $ _FILES数组为空

时间:2010-09-12 16:32:23

标签: ajax wordpress file-upload upload

我正在尝试使用wordpress'内置的ajax来使用AjaxUpload脚本处理上传。该脚本于8月更新,现在我无法让它继续工作。

http://valums.com/ajax-upload/

这是我的jquery ......这似乎已经存在,因为我将输入转换为上传按钮,并且在选择图像后,它开始尝试自动上传。

jQuery.noConflict();
jQuery(document).ready(function($) {

/*
 * AJAX UPLOAD
 * http://valums.com/ajax-upload/
 */


var uploader = new qq.FileUploader({
    // pass the dom node (ex. $(selector)[0] for jQuery users)
    element: document.getElementById('file-uploader'),
    // path to server-side upload script
    action: ajaxurl,
        params: {
        type: "POST",
        action: 'save_function',
        key: 'logo',
         },
    onComplete: function(id, fileName, responseJSON){

        console.debug("Here is the response: %o", responseJSON);
    }

});


}); //end document.ready functions

我的动作设置为ajaxurl,这是/wp-admin/admin-ajax.php的常量,我在params中传递了一个动作,以便admin-ajax知道我想运行什么函数来处理事情。和我的回调函数

function childtheme_data_save_callback() {
    global $my_shortname;


    $id = $_POST['key']; // option name

        $upload = wp_handle_upload($_FILES['qqfile']['tmp_name'], array('test_form' => false));        

    if(!empty($upload['error'])) { //there IS an error message
        die($upload['error']);
    } 
    else { // there is NOT an error
        $upload_image = $my_data; //preserve current data
        $upload_image[$id] = $upload['url'];
        update_option($my_shortname .'_options', $upload_image ) ;
        die($upload['url']); //response sends url back to jquery
    }


}


add_action('wp_ajax_save_function', 'childtheme_data_save_callback'); 

被调用,我的错误消息显示在我的firebug控制台中。这是错误

文件为空。请上传更实质的内容。此错误也可能是由于php.ini中的上传被禁用或者post_max_size被定义为小于php.ini中的upload_max_filesize而引起的。

涉及将错误消息更改为$ _FILES它总是返回一个空数组,即使在控制台中它表示POST已填充w /看起来像

ÿØÿà�JFIF��_�_��ÿÛ�C�    $.' ",#(7),01444'9=82<.342ÿÛ�C  2!!22222222222222222222222222222222222222222222222222ÿÀ�°

等等。虽然现在我看到控制台也说响应头有一个内容类型: Content-Type text / html;字符集= UTF-8

并且请求标头接受: 接受text / html,application / xhtml + xml,application / xml; q = 0.9, / ; q = 0.8

是不是以“multipart / form-data”编码发送POST的问题?如果是这样我怎么切换到那,因为我使用这个插件而不是表格标签?如果没有,我现在已经被困了一段时间了。

1 个答案:

答案 0 :(得分:0)

您需要检查GET变量qqfile,如果已设置,则它包含您的文件名,而文件位于发布数据中。您最有可能包含各种服务器端脚本中的示例/示例的js包。另请注意,如果未设置GET qqfile变量,则应回退到使用FILE []加载较旧的浏览器支持。