Laravel 异步上传文件

Laravel uploading files asynchronously

我通过调度作业相当熟悉 Laravel 队列和 运行 异步逻辑 Laravel。

我正在构建的网站需要处理大型视频文件,所以我需要这些上传是异步的,用户现在需要等待 5 到 10 分钟才能上传他们的文件。

这可能吗?这将如何在 Laravel 队列中实现?什么在请求中发送到服务器?

我在 Google 上找不到任何解决此问题的内容,所以我只是在寻找一些一般性指导。

理想情况是用户选择他们的文件,单击上传,然后安排一个作业来上传文件并在完成后通过电子邮件通知用户。

谢谢!

对于要上传的文件,启动上传的页面必须在上传期间保持打开状态。这本身是有道理的,因为否则,如果用户选择关闭正在上传的页面,您基本上可以 "steal" 上传文件,而不管用户的操作如何。

此处唯一实用的方法是允许用户 select 文件并使用 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);

异步上传文件,允许用户在等待上传完成的同时在同一页面内执行其他操作(例如填写上传所需的其他数据)。