Как исправить перенаправление формы PHP для загрузки файлов на сервер

пожалуйста помоги. Я пытаюсь создать загрузчик файлов с помощью перетаскивания с помощью php и javascript, но когда я нажимаю на загрузку файлов, файл php показывает следующую ошибку: Эта страница не работает. В настоящее время localhost не может обработать этот запрос. ОШИБКА HTTP 500

Вот тело моего html.

<body>
        <div class = "wrapper">
            <div class = "upload-console">
                <h2 class = "upload-console-header">Upload</h2>

                <div class = "upload-console-body">
                    <h3>Select files from your computer</h3>
                    <form action = "upload.php" method = "post" enctype = "multipart/form-data">
                        <input type = "file" name = "files[]" id = "standard-upload-files" multiple>
                        <input type = "submit" value = "Upload files" id = "standard-upload">
                    </form>

                    <h3>Or drag and drop files below</h3>
                    <div class = "upload-console-drop" id = "drop-zone">
                        Just drag and drop files here
                    </div>

                    <div class = "bar">
                        <div class = "bar-fill" id = "bar-fill">
                            <div class = "bar-fill-text" id = "bar-fill-text"></div>
                        </div>
                    </div>

                    <div id = "uploads-finished" class = "hidden">
                        <h3>Processed files</h3>
                    </div>      
                </div>
            </div>
        </div>
        <script src = "js/upload.js"></script>
        <script src = "js/global.js"></script>
    </body>

Вот мой файл upload.php.

<?php
    header('Content-Type: application/json');

    $allowed = ['mp4','png','jpg'];
    $processed = [];

    foreach($_FILES['files']['name'] as $key => $name) {
        if ($_FILES['files']['error'][$key] === 0) {

            $temp = $_FILES['files']['tmp_name'][$key];

            $ext = explode('.',$name);
            $ext = strtolower(end($ext));

            $file = uniqid('',true) . time() . '.' . $ext;

            if (in_array($ext, $allowed) && move_uploaded_file($temp, 'uploads/' . $file)) {
                $processed[] = array(
                    'name' => $name,
                    'file' => $file,
                    'uploaded' => true
                );
            } else {
                $processed[] = array(
                    'name' => $name,
                    'uploaded' => false
                );
            }
        }
    } 
    echo json_encoded($processed);
?>

Вот результаты выполнения команды дерева

.
├── css
│   └── global.css
├── index.html
├── js
│   ├── global.js
│   └── upload.js
├── phpinfo.php
├── upload.php
└── uploads
    ├── 5cc57ea6322ba7.448603261556446886.jpg
    ├── 5cc58390d82095.937935921556448144.jpg
    ├── 5cc583f48b4a81.475000611556448244.jpg
    ├── 5cc596bb0b2980.525819171556453051.jpg
    ├── 5cc5ca069f34e8.919505521556466182.jpg
    └── 5cc5ccc7525ad4.537311361556466887.jpg

Кажется, изображения загружаются, но я получаю страницу с ошибкой 500. Я пытаюсь заставить индикатор выполнения показывать прогресс и изменить скрытый класс, чтобы показать загруженные файлы. Но он перенаправляет на uploads.php с ошибкой 500. Спасибо.

Все html и js можно увидеть здесь на codepen.

echo json_encoded($processed); вы имели в виду echo json_encode($processed);?
Chris White 28.04.2019 18:29
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
1
153
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Ваша форма будет перенаправлять на «действие» внутри нее, в вашем случае это upload.php — если вы хотите остановить перенаправление, вам нужно будет добавить перенаправление php: header("Location: mypage.php"); чтобы вернуться на предыдущую страницу.

Если ваши страницы динамические и вы не знаете, что такое mypage.php, добавьте в форму скрытый ввод и используйте для этого имя страницы в качестве значения.

Обновлено: мои извинения, это все еще не решает вашу проблему - указанное выше перенаправление будет выполняться при выполнении вашего скрипта. Ошибка 500 связана с ошибкой в ​​вашем коде. Эта ошибка (как упоминал @Chris White в ваших комментариях) это echo json_encoded($processed); Это должно быть echo json_encode($processed);

@martinb Не беспокойтесь! Я неправильно понял ваш первоначальный запрос, но надеюсь, что помог вам и в этом отношении.

Taylor Stocks 28.04.2019 18:52

замените json_encoded на json_encode редактировать: только что понял, что кто-то уже ответил ... мое предложение - использовать какую-то IDE, я нашел ее менее чем за секунду. IDE выделяет синтаксические ошибки

Другие вопросы по теме