这个其实有解决方案,通常的解决方案是将文件打包,然后将打包后的文件进行下载,就成为了一个压缩包.以前在弄网盘的时候,曾用过一个非常好用的包.用来生成压缩包的.Zippy,以下是一个示例,摘抄的:
require __DIR__ . '/vendor/autoload.php';
$zippy = Zippy::load();
$archive = $zippy->create('archive.zip', array(
'folder' => '/path/to/directory', // will create a folder at root
'http://www.google.com/logo.jpg', // will create a logo.jpg file at root
fopen('https://www.facebook.com/index.php'), // will create an index.php at root
'directory/image.jpg' => 'image.jpg', // will create a image.jpg in 'directory' folder
));
请使用composer来安装:
composer require alchemy/zippy
当然,这一种方式很lower,一旦文件一大,ok,你就等着死机吧.所以有很多云盘会限制大小.
来一种高级一点的方案,就简单提一下.workerman,swoole这些解决方案.
先将文件打包命令发送过去.然后php异步打包.让前端去查询打包任务是否完成.
完成了在下来.
如果说,你仅仅只是想让前端下载多个文件,而不是统一打包.那你就让前端多模拟请求,这样也可以实现.
但是如果是文件夹的话.恭喜你,你要完蛋了,前端忙死了