Проблема в том, что, кажется, все работает, за исключением случаев, когда я на самом деле пытаюсь загрузить файл и нажимаю кнопку отправки, я думаю, что файл обрабатывается, но php по какой-то причине не обрабатывает его (я действительно мало знаю о php, это было взято из онлайн-руководства, поэтому я не уверен, что ошибаюсь). Массив файлов не отправляется в файл php.
Код HTML:
<!DOCTYPE html>
<html lang = "en">
<head>
<meta charset = "UTF-8">
<meta name = "viewport" content = "width=device-width, initial-scale=1.0">
<meta http-equiv = "X-UA-Compatible" content = "ie=edge">
<title>Upload Files</title>
</head>
<body>
<form method = "post" enctype = "multipart/form-data">
<input type = "file" name = "files[]" multiple>
<input type = "submit" value = "Upload File" name = "submit">
</form>
<script src = "upload.js"></script>
</body>
</html>
Код JavaScript:
const url = 'process.php';
const form = document.querySelector('form');
form.addEventListener('submit', e => {
e.preventDefault();
const files = document.querySelector('[type=file]').files;
const formData = new FormData();
for (let i = 0; i < files.length; i++) {
let file = files[i];
formData.append('files[]', file);
}
fetch(url, {
method: 'POST',
body: formData
}).then(response => {
console.info(response);
});
});
Код php:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (isset($_FILES['files'])) {
$errors = [];
$path = 'uploads/';
$extensions = ['m4a', 'mp3', 'mkv', 'mp4', 'wav', 'flac', 'alac', 'aiff', 'avi'];
$all_files = count($_FILES['files']['tmp_name']);
print_r('hi');
for ($i = 0; $i < $all_files; $i++) {
$file_name = $_FILES['files']['name'][$i];
$file_tmp = $_FILES['files']['tmp_name'][$i];
$file_type = $_FILES['files']['type'][$i];
$file_size = $_FILES['files']['size'][$i];
$file_ext = strtolower(end(explode('.', $_FILES['files']['name'][$i])));
$file = $path . $file_name;
if (!in_array($file_ext, $extensions)) {
$errors[] = 'Extension not allowed: ' . $file_name . ' ' . $file_type;
}
if ($file_size > 50000000) {
$errors[] = 'File size exceeds limit: ' . $file_name . ' ' . $file_type;
}
if (empty($errors)) {
move_uploaded_file($file_tmp, $file);
}
}
if ($errors) print_r($errors);
}
}
В php-коде, если я попробую выполнить оператор печати в цикле «if (isset ($ _ FILES ['files']))», он никогда ничего не распечатает, поэтому этот цикл никогда не вводится, что означает, что файлы не прошли , даже если я попытаюсь ввести консольный журнал массива файлов в моем коде Javascript, он правильно отобразится в моих инструментах разработчика.
Как ты имеешь в виду именно. Разве Javascript не нужен для взаимодействия между html и php?
Проверить через stackoverflow.com/questions/2704314/multiple-file-upload-in- php
@ user10366926 - Нет, обычная отправка формы подойдет.
Понятно, есть идеи, почему он не работает как есть?



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


Можете ли вы попробовать это без бит Javascript?