Форум программистов, компьютерный форум, киберфорум
WordPress
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
15 / 0 / 1
Регистрация: 22.08.2014
Сообщений: 4

Пустой массив $_FILES в wordpress

22.08.2014, 19:08. Показов 2867. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День не добрый(

Посоветуйте пожалуйста в чем может быть причина, надеюсь на Ваш опыт, суть проблемы такова создаю форму в админке wordpress 3.9.2:

HTML5
1
2
3
4
5
6
<form enctype="multipart/form-data" method="post" name="form_images" >
       <?php wp_nonce_field('form_images', 'form_images', false);?>
       <input type="hidden" name="MAX_FILE_SIZE" value="10485760" />
       <input type="file" name="image_file">
       <input type="submit" name="image_submit" value="Добавить">
</form>
на сервере скрипт:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
add_action( 'save_post', 'spcSaveImage' );
 
function spcSaveImage()
{
   
    if(wp_verify_nonce($_POST['form_images'], 'form_images'))
    {
        echo $_FILES['image_file']['name']; //Notice: Undefined index: image_file in /home/m/mbholdru/test/public_html/wp-
                                                           //content/plugins/simple-product-catalog-master/simple-product-catalog.php on line 173
 
        $uploaddir = $_SERVER['DOCUMENT_ROOT'].'/wp-content/uploads';
        
        $uploadfile = $uploaddir .'/'. basename($_FILES['image_file']['name']);
 
        if(!is_readable($uploaddir))
        {
            mkdir($uploaddir);
            
        }
        
        if(is_uploaded_file($_FILES['image_file']['tmp_name']))
        {
            move_uploaded_file($_FILES['image_file']['tmp_name'], $uploadfile);
        }
 
    }
}
и после отправки файла на сервер, ничего не происходит, массив $_FILES пуст,
поиск по wordpress дал:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function wp_unregister_GLOBALS() {
    if ( !ini_get( 'register_globals' ) )
        return;
 
    if ( isset( $_REQUEST['GLOBALS'] ) )
        die( 'GLOBALS overwrite attempt detected' );
 
    // Variables that shouldn't be unset
    $no_unset = array( 'GLOBALS', '_GET', '_POST', '_COOKIE', '_REQUEST', '_SERVER', '_ENV', '_FILES', 'table_prefix' );
 
    $input = array_merge( $_GET, $_POST, $_COOKIE, $_SERVER, $_ENV, $_FILES, isset( $_SESSION ) && is_array( $_SESSION ) ? $_SESSION : array() );
    foreach ( $input as $k => $v )
        if ( !in_array( $k, $no_unset ) && isset( $GLOBALS[$k] ) ) {
            $GLOBALS[$k] = null;
            unset( $GLOBALS[$k] );
        }
}
знакомый подсказал что чистит и $_FILES (решение не знает), для проверки сервера сделал файл в корне сайта без подключения wordpress api, файл грузиться, все работает, google сказал все должно работать
может кто сталкивался????
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.08.2014, 19:08
Ответы с готовыми решениями:

Пустой массив print_r($_FILES)
Добрый день форумчане! Сталкиваюсь с проблемой при аплоаде файлов. Выбираю файл, отправляю форму, а в ответ пусто. В обработчике для...

Массив $_FILES пустой при попытке загрузить файл через AJAX
Здравствуйте понимаю что вопрос с бородой но все же есть форма для загрузки картинок &lt;form id=&quot;add_news&quot;...

Отправляем файл через FormData(), запрос есть, а массив $_FILES пустой (сервер не может распарсить запрос?)
Код практически весь из мурзилки отсюда Задача - отправить файл черех Ajax, поместив в FormData(); Скажу сразу: данные, если верить...

6
 Аватар для hardwaremaster
307 / 307 / 142
Регистрация: 12.02.2014
Сообщений: 1,165
Записей в блоге: 1
23.08.2014, 00:31
А какую вообще цель преследуете? как вы собираетесь использовать загружаемый файл?

для загрузки вам может помочь функция wp_handle_upload и на офф кодексе
0
15 / 0 / 1
Регистрация: 22.08.2014
Сообщений: 4
23.08.2014, 19:38  [ТС]
Добрый

по порядку
1. сайт : интернет магазин
2. хочу в админке сделать отдельное поле для каждого значения(описание, галерея, цена и т.п) и потом рендерить представления товара
а не в текстовой области мучатся с версткой
3. задуманный meta box будет загружать картинку и добавлять в meta данные поста и дальше в представление

по поводу wp_handle_upload на офф кодексе содержание такое:

HTML5
1
2
3
4
$file = &$_FILES['my_file_upload']; // а у меня он пуст!!!
    $overrides = array( 'test_form' => false );
 
    $movefile = wp_handle_upload( $file, $overrides );
Добавлено через 12 минут
вчера в офф кодексе наткнулся на статью
по ней получается использовать только ajax, так как при дабовлении meta box
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
add_action('add_meta_boxes', 'spcImageBox');
 
function spcImageBox()
{
 
        add_meta_box( 'spc_images_box', 'Галерея товара', 'spcImagesForm', 'spc_product');
}
 
 
function spcImagesForm()
{
    ?>
[HTML]
<form enctype="multipart/form-data" method="post" name="form_images">
            <?php wp_nonce_field('image_form', 'image_form', false);?>
            
            <input type="file" name="simple-product-catalog-master">
            <input type="submit" name="image_submit" value="Добавить">
</form>
[/HTML]
    <?php
    //echo get_post_meta($post_id);
}
теги form отбрасываются и остается только
HTML5
1
<input>
и отправка данных только на
HTML5
1
action="post.php"
0
 Аватар для hardwaremaster
307 / 307 / 142
Регистрация: 12.02.2014
Сообщений: 1,165
Записей в блоге: 1
23.08.2014, 20:36
Цитата Сообщение от setler Посмотреть сообщение
хочу в админке сделать отдельное поле для каждого значения(описание, галерея, цена и т.п) и потом рендерить представления товара
а не в текстовой области мучатся с версткой
Правильно, я в основном тоже такой вариант предпочитаю

Так что, у вас так и не получилось ничего? я даже не знаю что еще предложить. Когда-то тоже была задумка сделать загрузчик что бы прайс обновлять, но начал, чего-то работало не совсем правильно, отложил... так и по сей день ))
0
15 / 0 / 1
Регистрация: 22.08.2014
Сообщений: 4
23.08.2014, 21:20  [ТС]
отлично, значит еще кому-то пригодится. Копался еще в исходниках, результат:
как я думаю к форме поста добавляется meta box и идет отправка на сервер и там начинается
PHP
1
2
3
4
5
6
7
8
9
10
function wp_media_upload_handler() {
    $errors = array();
    $id = 0;
 
    if ( isset($_POST['html-upload']) && !empty($_FILES) ) {
        check_admin_referer('media-form');
        // Upload File button was clicked
        $id = media_handle_upload('async-upload', $_REQUEST['post_id']);
        unset($_FILES);
//и так далее
и получается после отправки данных &_FILES пуст, но это только на backend проекта, пробовал так:
PHP
1
2
3
4
5
6
7
8
add_action( 'save_post', 'spcSaveImage' );
function spcSaveImage($file)
{
    $_GET['type'] = 'image';
    $_GET['tab'] = 'type';
    //$_REQUEST['post_id'] = $post_id;
    //$action = 'edit';
    require_once( ABSPATH . 'wp-admin/media-upload.php' );
ответ сервера: "Хакер что ли?";
0
15 / 0 / 1
Регистрация: 22.08.2014
Сообщений: 4
25.08.2014, 18:06  [ТС]
Лучший ответ Сообщение было отмечено Taatshi как решение

Решение

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
add_action("admin_init", "images_init");
add_action('save_post', 'save_images_link');
function images_init(){
          $post_types = get_post_types();
          foreach ( $post_types as $post_type ) {
          add_meta_box("my-images", "Pictures", "images_link", $post_type, "normal", "low");
      }
    }
 
function images_link(){
    global $post;
    $custom  = get_post_custom($post->ID);
    $link    = $custom["_link"][0];
    $count   = 0;
    echo '</pre>
<div class="link_header">';
 $query_images_args = array(
 'post_type' => 'attachment',
 'post_mime_type' =>array(
 'jpg|jpeg|jpe' => 'image/jpeg',
 'gif' => 'image/gif',
 'png' => 'image/png',
 ),
 'post_status' => 'inherit',
 'posts_per_page' => -1,
 );
 $query_images = new WP_Query( $query_images_args );
 $images = array();
 echo '
<div class="frame">';
 $thelinks = explode(',', $link);
     foreach ( $query_images->posts as $file) {
         if(in_array($images[]= $file->ID, $thelinks)){
             echo '<label><input type="checkbox" value="'.$images[]= $file->ID.'" checked="checked" /><img src="'.$images[]= $file->guid.'"
             alt="" width="60" height="60" /></label>';
 }
else
{
     echo '<label><input type="checkbox" value="'.$images[]= $file->ID.'" /><img src="'.$images[]= $file->guid.'" alt="" width="60"
     height="60" /></label>';
 }
 $count++;
 }
 echo '</div>
</div>
<pre>
';
    echo '<input class="field" type="hidden" name="link" value="'.$link.'" />';
    echo '</pre>
    <div class="images_count"><span>Files: <strong>'.$count.'</strong></span>
         <div class="count-selected"></div>
    </div>
<pre>
';
}
 
function save_images_link(){
    global $post;
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){ return $post->ID; }
    update_post_meta($post->ID, "_link", $_POST["link"]);
}
 
add_action( 'admin_head-post.php', 'images_css' );
add_action( 'admin_head-post-new.php', 'images_css' );
 
function images_css() {
echo '';
}
 
add_action( 'admin_head-post.php', 'images_js' );
add_action( 'admin_head-post-new.php', 'images_js' );
 
function images_js(){
    ?>
<script type="text/javascript">
jQuery(document).ready(function($){
  $('.frame input').change(function() {
    var values = new Array();
        $("#results").empty();
    var result = new Array();
    $.each($(".frame input:checked"), function() {
        result.push($(this).attr("value"));
        $(this).parent().addClass('checked');
    });
    $('.field').val(result.join(','));
    $('.count-selected').text('Selected: '+result.length);
    $.each($(".frame input:not(:checked)"), function() {
        $(this).parent().removeClass('checked');
    });
  });
    var result = new Array();
    $.each($(".frame input:checked"), function() {
        result.push($(this).attr("value"));
        $(this).parent().addClass('checked');
    });
    $('.field').val(result.join(','));
    $('.count-selected').text('Selected: '+result.length);
    $.each($(".frame input:not(:checked)"), function() {
        $(this).parent().removeClass('checked');
    });
});
</script>
<?php
}
 
function wps_thumbnails_list(){  
    
global $post;        
$image = get_post_meta($post->ID, '_link', true);
       $image = explode(",", $image);
       foreach($image as $images){
        $url = wp_get_attachment_image_src($images, 1, 1);
            echo '<a class="lightbox" href="';         echo $url[0];         echo '">';
 echo wp_get_attachment_image($images,'thumbnail', 1, 1);
 echo '</a>';
        }
        
}
0
 Аватар для hardwaremaster
307 / 307 / 142
Регистрация: 12.02.2014
Сообщений: 1,165
Записей в блоге: 1
25.08.2014, 21:39
setler, Спасибо, уверен кому то точно пригодиться
Вот так бы все делали, нашел ответ поделился с другими ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
25.08.2014, 21:39
Помогаю со студенческими работами здесь

Почему $_FILES пустой?
Отправляю файл на сервер таким образом: // заполняем переменную данными, при изменении значения поля file var file =...

Загрузка файлов - $_FILES пустой
Здравствуйте, имеется скрипт для загрузки файлов: function uploadFile() { $upfile = $_FILES; $name = $_FILES; $size =...

Файлы не загружаются - $_FILES пустой
Есть файл для закачки картинок &lt;form action=&quot;upload.php&quot; method=&quot;post&quot; &gt; &lt;input name=&quot;userfile&quot; type=&quot;file&quot; /&gt; ...

$_FILES['file']['tmp_name']; всегда пустой
Добрый вечер! Проблема в том что $tmp_name всегда пустой.Даже когда пишу echo $tmp_name ничего не выводиться. Вот код на php: ...

почему $_FILES пустой, но в $_REQUEST есть значение
форма &lt;form enctype=&quot;multipart/form-data&quot; action=&quot;fileUpload&quot; method=&quot;get&quot;&gt; &lt;input type=&quot;hidden&quot; name=&quot;_token&quot; value=&quot;{{...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru