пожалуйста помоги. Я пытаюсь создать загрузчик файлов с помощью перетаскивания с помощью 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.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Ваша форма будет перенаправлять на «действие» внутри нее, в вашем случае это upload.php — если вы хотите остановить перенаправление, вам нужно будет добавить перенаправление php:
header("Location: mypage.php"); чтобы вернуться на предыдущую страницу.
Если ваши страницы динамические и вы не знаете, что такое mypage.php, добавьте в форму скрытый ввод и используйте для этого имя страницы в качестве значения.
Обновлено: мои извинения, это все еще не решает вашу проблему - указанное выше перенаправление будет выполняться при выполнении вашего скрипта.
Ошибка 500 связана с ошибкой в вашем коде. Эта ошибка (как упоминал @Chris White в ваших комментариях)
это echo json_encoded($processed);
Это должно быть
echo json_encode($processed);
@martinb Не беспокойтесь! Я неправильно понял ваш первоначальный запрос, но надеюсь, что помог вам и в этом отношении.
замените json_encoded на json_encode редактировать: только что понял, что кто-то уже ответил ... мое предложение - использовать какую-то IDE, я нашел ее менее чем за секунду. IDE выделяет синтаксические ошибки
echo json_encoded($processed);вы имели в видуecho json_encode($processed);?