Загрузите папку на сервер с laravel

Я пытаюсь написать сценарий, который позволяет пользователю загружать папку. Обычно пользователь указывает папку, и все содержащиеся в ней файлы должны быть загружены с восстановлением относительного пути или структуры папок на сервере.

Часть html использует webkitdirectory,

<form action = "cmd/test" enctype = "multipart/form-data" method = "post">
    <input id = "upload" name = "content[]" type = "file" value = "Input" directory webkitdirectory>
    <input type = "submit" value = "submit">
</form>

И сервер написан на Laravel. Я надеялся использовать Request в Laravel, например

Route::any('cmd/test', function(\Illuminate\Http\Request $request) {
    echo $request;
    $files = $request->file('content');
    echo json_encode($files);
    //Store the files here...
});

Я попытался загрузить тестовую папку со следующим содержимым:

dir /s test

 Directory of C:\Users\███████\Desktop\test

18-Nov-18  05:19 PM    <DIR>          .
18-Nov-18  05:19 PM    <DIR>          ..
18-Nov-18  05:19 PM                 1 note1.txt
18-Nov-18  05:19 PM                 1 note2.txt
18-Nov-18  05:20 PM    <DIR>          test1
               2 File(s)              2 bytes

 Directory of C:\Users\███████\Desktop\test\test1

18-Nov-18  05:20 PM    <DIR>          .
18-Nov-18  05:20 PM    <DIR>          ..
18-Nov-18  05:20 PM                 1 note3.txt
               1 File(s)              1 bytes

     Total Files Listed:
               3 File(s)              3 bytes

К моему удивлению, результат тестового скрипта выглядит следующим образом:

[{},{},{}]

Request::file() не извлекает никакой информации об имени файла или его содержимом. Тот же результат с Edge или Firefox. Какие-либо предложения?


Обновлено: В основном мне плохо не понимать, что тип возвращаемого значения - UploadedFile. Проблема с получением относительного пути к файлам для восстановления структуры папок остается.

Может быть актуально: $_FILES['content']['name'] действительно возвращает ["note1.txt", "note2.txt", "note3.txt"], поэтому сервер действительно получает что-то о файлах.

R. Wang 18.11.2018 10:39

Просто примечание по состоянию на 2018 год, не используйте webkitdirectory для производства (источник: MDN).

Anwar 18.11.2018 10:42

Попробовал на простом PHP в Chrome 70.0.3538.102 @ Windows 8, я правильно получаю файлы. Что содержится в $files, когда вы пробуете его на своей стороне?

Anwar 18.11.2018 11:02

Пробовал новый проект laravel 5.7, все еще пытаюсь на моем Chrome, работает нормально, я получил это: ibb.co/jjTmS0

Anwar 18.11.2018 11:31

попробуйте изменить name = "content []" на name = "content"

Mohammad Rbabah 18.11.2018 12:04

@Anwar Попробовал снова, это действительно сработало, но я был достаточно глуп, чтобы не осознавать, что 1. phpstorm не понимает, что $files был массивом UploadedFile; 2. json_encode ничего не сообщает о содержимом UploadedFile. Спасибо

R. Wang 18.11.2018 12:37
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
6
1 805
0

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