Пытаетесь загрузить файлы через HTML-форму, которая обрабатывает файл php, но не работает?

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

Nigel Ren 18.11.2018 08:47

Как ты имеешь в виду именно. Разве Javascript не нужен для взаимодействия между html и php?

user10366926 18.11.2018 08:50

Проверить через stackoverflow.com/questions/2704314/multiple-file-upload-in-‌ php

Nigel Ren 18.11.2018 08:54

@ user10366926 - Нет, обычная отправка формы подойдет.

Quentin 18.11.2018 09:09

Понятно, есть идеи, почему он не работает как есть?

user10366926 18.11.2018 09:15
Поведение ключевого слова "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) для оценки ваших знаний,...
1
5
31
0

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