AjaxUpload $ _FILES массив пуст - PullRequest
       5

AjaxUpload $ _FILES массив пуст

1 голос
/ 12 сентября 2010

Я пытаюсь использовать встроенный в AJAX WordPress для обработки загрузки с использованием сценария AjaxUpload. Сценарий был обновлен в августе, и теперь я не могу заставить его работать.

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, я передал действие в параметрах, чтобы 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 меньше, чем upload_max_filesize в php.ini.

Перебирая с изменением сообщения об ошибке на $ _FILES, он всегда возвращает пустой массив, даже если в консоли он говорит, что POST заполнен w / stuff, который выглядит как

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

и более. хотя теперь я вижу, что консоль также говорит, что заголовки ответа имеют тип содержимого: Content-Type text / html; кодировка = UTF-8

и заголовки запроса принимают: Принять текст / html, application / xhtml + xml, application / xml; q = 0,9, / ; q = 0,8

проблема в том, что не отправлять POST в кодировке "multipart / form-data"? если так, как я могу переключиться на это, так как я использую этот плагин, а не тег формы? если нет, то я был на некоторое время в тупике.

1 Ответ

0 голосов
/ 23 октября 2010

Вам необходимо проверить переменную GET qqfile, и, если она установлена, она содержит имя вашего файла, пока файл находится в данных поста.Пакет js, который вы получили, скорее всего, содержит примеры / примеры в различных серверных сценариях.Также обратите внимание, что если переменная GET qqfile не установлена, вам следует вернуться к загрузке с помощью FILE [] для поддержки старых браузеров.

...