INPVLSA
@INPVLSA
Типо Full-Stack

Почему не сохраняется файл wp_handle_upload()?

Пытаюсь сохранить переданный в форму файл, использую пример с WP-Kama. Как итог получаю сообщение, о том, что загрузка прошла успешно, но файл отсутствует по адресу, возвращаемому в массиве $movefile.

Обработчик:
if( wp_verify_nonce( $_POST['fileup_nonce'], 'my_file_upload' ) ){
    if ( ! function_exists( 'wp_handle_upload' ) )
        require_once( ABSPATH . 'wp-admin/includes/file.php' );

    $file = &$_FILES['my_file_upload'];
    $overrides = array( 'test_form' => false );

    $movefile = wp_handle_upload( $file, $overrides );

    if ( $movefile && empty($movefile['error']) ) {
        echo "Файл был успешно загружен.\n";
        print_r( $movefile );
    } else {
        echo "Возможны атаки при загрузке файла!\n";
    }
}

Форма:
<div id="modal_form">
    <form enctype="multipart/form-data" action="" method="POST">
        <?php wp_nonce_field( 'my_file_upload', 'fileup_nonce' ); ?>
        <input name="my_file_upload" type="file" />
        <input type="submit" value="Загрузить файл" />
    </form>
</div>
  • Вопрос задан
  • 394 просмотра
Решения вопроса 1
INPVLSA
@INPVLSA Автор вопроса
Типо Full-Stack
Хоть я и не заметил особой разницы между этими двумя вариантами, работает вариант, предоставленный в качестве примера с codex.

А именно, обработчик:
if ( ! function_exists( 'wp_handle_upload' ) ) {
        require_once( ABSPATH . 'wp-admin/includes/file.php' );
    }

    $uploadedfile = $_FILES['my_file_upload'];

    $upload_overrides = array( 'test_form' => false );

    $movefile = wp_handle_upload( $uploadedfile, $upload_overrides );

    if ($movefile && !isset( $movefile['error'] ) ) {
        echo "File is valid, and was successfully uploaded.\n";
        echo print_r( $movefile );
    } else {
        /**
         * Error generated by _wp_handle_upload()
         * @see _wp_handle_upload() in wp-admin/includes/file.php
         */
        echo $movefile['error'];
    }

<form enctype="multipart/form-data" action="" method="POST">
        <?php wp_nonce_field( 'my_file_upload', 'fileup_nonce' ); ?>
        <input name="my_file_upload" type="file" />
        <input type="hidden" name="upload" value="on">
        <input type="submit" value="Загрузить файл" />
    </form>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы