Задать вопрос

Почему не передается файл из формы?

Есть php файл, в нем switch case. По дефолту выводится html форма, при submit этой формы через ajax обращаюсь к этому же php файлу, но с параметром, конструкция switch case перехватывает этот параметр и должна происходить обработка файла. Но массив $_FILES пустой. В чем может быть проблема?
$action = $_POST["action"];
switch ($action):
    case "read_file":
        if($handle = fopen($_FILES['file']['tmp_name'], 'rb')) {
            ....
        }
        break;
    default:
        ?>
        <form id="getFile" method="post" enctype="multipart/form-data">
            <input type="file" name="file" id="file">
            <input type="hidden" name="action" value="read_file">
            <input type="submit" value="Выполнить" class="js-submit">
        </form>
        <div class="js-answer"></div>
        <script>
            $('body').on('submit', '#getFile', function (e) {
                e.preventDefault();
                $('.js-answer').html('');
                var _form = $(this);
                $.ajax({
                    url: 'discount_system.php',
                    dataType: 'json',
                    type: 'POST',
                    data: {
                        'action': "read_file",
                    },
                    error: function (data) {
                        console.log(data);
                    },
                }).done(function (data) {
                    $('.js-answer').html(data.html);
                    _form.find('.js-submit').prop('disabled', false);
                });
            });
        </script>
    <?
endswitch;
  • Вопрос задан
  • 617 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
yuraSco
@yuraSco Автор вопроса
Добавил в скрипт
var formData = new FormData();
   $.each($('#file')[0].files, function(i, file) {
        formData.append('file', file);
   });
   formData.append('action', 'read_file');

Почему то думал, что файл из формы с помощью магии попадает в $_FILES
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Palych_tw
@Palych_tw
Типа веб-разработчик
В чем может быть проблема?


В том, что вы не отправляете ничего на сервер. Или мне показалось?
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы