Laravel загружает файлы асинхронно - PullRequest
0 голосов
/ 13 мая 2018

Я довольно хорошо знаком с Laravel Queues и с асинхронной логикой в ​​Laravel, планируя задания.

Веб-сайт, который я создаю, должен обрабатывать большие видеофайлы, поэтому мне нужно, чтобы эти загрузки были асинхронными, теперь пользователи ждут загрузки своего файла от 5 до 10 минут.

Возможно ли это? Как это будет реализовано в очереди Laravel? Что отправляется на сервер в запросе?

Я не могу найти в Google ничего, что могло бы решить эту проблему, поэтому я просто ищу некоторые общие рекомендации.

В идеале пользователь должен выбрать свой файл, щелкнуть кнопку «загрузить», после чего запланировано задание на загрузку файла и уведомление пользователя по электронной почте о завершении.

Спасибо!

1 Ответ

0 голосов
/ 13 мая 2018

Для загрузки файлов страница , которая инициировала загрузку, должна оставаться открытой на время загрузки .Это само по себе имеет смысл, потому что в противном случае, если пользователь решит закрыть страницу в процессе загрузки, вы можете по существу «украсть» загружаемый файл независимо от действий пользователя.

Единственное единственноеПрактический подход здесь состоит в том, чтобы позволить пользователю выбирать файлы и загружать их, используя запрос XHR, что-то вроде:

var payload = new FormData();
payload.append('file', document.getElementById('fileInput'));

var xhr = new XMLHttpRequest();
xhr.open('POST', '/upload', true);

xhr.addEventListener('load', function (e) {
    // Do stuff when upload is complete
});

xhr.send(payload);

Загрузка файлов асинхронно, позволяет пользователю выполнять другие действия на той же страницев ожидании завершения загрузки (например, введите дополнительные данные, необходимые для загрузки).

...