Создание PHP-бэкенда для загрузки файлов с помощью filepond

Я создаю форму на веб-сайте, куда также необходимо загружать файлы (изображения и PDF-файлы). До сих пор я использовал простой элемент input type = "file", связанный с PHP-файлом на серверной части (фрагмент следует ниже):

$allowed = array('jpg', 'jpeg', 'pdf', 'png');
if (isset($_FILES['uploadctl']) && $_FILES['uploadctl']['error'] == 0){
    $extension = pathinfo($_FILES['uploadctl']['name'], PATHINFO_EXTENSION);

    if (!in_array(strtolower($extension), $allowed)){
        echo '{"status":"not_allowed"}';
        exit;
    }

    // create folder to upload files to
    $id = session_id();
    $user_folder = 'user_data/' . $id;
    if ( is_dir($user_folder) === false ){
        mkdir($user_folder); 
    }
    if (move_uploaded_file($_FILES['uploadctl']['tmp_name'], $user_folder . "/" . $_FILES['uploadctl']['name'])){
        echo '{"status":"success"}';
        exit;
    }
    echo '{"status":"error"}';
}

Это хорошо работает. Тем не менее, я хотел бы больше функциональности для формы загрузки и заглянул в файлохранилище. Я создал объект filepond в соответствии с документацией и скопировал шаблонный код в ./file-pond-assets, который позже планирую адаптировать под свои нужды:

<input type = "file" name = "uploadctl" multiple accept = ".pdf,.png,.jpg,.jpeg">
<script>
            const inputElement = document.querySelector('input[type = "file"]');
            const pond = FilePond.create( inputElement );
            pond.setOptions({
                server: './file-pond-assets'
            });
</script>

который отображается при отображении веб-сайта. При попытке загрузить файл интерфейс выглядит нормально, так как появляется сообщение upload complete. Однако я не могу найти загруженные файлы в папке tmp и uploads внутри ./file-pond-assets. Я попытался изменить права доступа к папкам, а также проверил консоль, но не могу найти сообщение об ошибке. Файл config.php также указывает на правильные папки. Что я упустил, из-за чего мои файлы не отображаются на моем сервере? Я хотел бы сохранить загрузку как multipart/form-data.

🤔 А знаете ли вы, что...
JavaScript позволяет создавать собственные серверные приложения с использованием платформы Node.js.


1
3 422
1

Ответ:

Решено

Вот ссылка на мой пример репозитория реализации PHP-сервера файлового пруда на gihtub Ссылка на репозиторий: https://github.com/Onihani/filepond-php-server-example Предварительный просмотр в реальном времени: http://www.ics-courses.co.uk/natbongo/filepond-php-server-example/