Laravel可恢复下载

z9gpfhce  于 2023-04-22  发布在  其他
关注(0)|答案(1)|浏览(111)

我的PHP脚本正在使用Laravel的Response::download函数下载一个zip文件给用户:

$file    = public_path(). "/storage/rhcloud/lobby/0.1.zip";
$downloadName = "lobby-0.1";
$headers = array(
   'Content-Type: application/zip',
);
return Response::download($file, $downloadName, $headers);

下载工作正常。但是,无法执行暂停/恢复下载功能。
我在网上搜遍了,但是没有找到任何东西。Laravel支持这种部分内容下载吗?或者应该使用原生PHP代码来代替Laravel的代码?
即使我添加了额外的代码,我如何才能使Response::download函数从用户请求头的给定字节中获取数据?

euoag5mw

euoag5mw1#

如果你不指定内容长度(即文件的大小),浏览器不知道如何或从哪里恢复下载。此外,你可以使用basename()函数从完整路径获取文件名-无需硬编码
试试这个:

$file    = public_path(). "/storage/rhcloud/lobby/0.1.zip";
$headers = [
   'Content-Type' => 'application/zip',
   'Content-Length' => filesize($file)
];
return Response::download($file, basename($file), $headers);

或者对于老版本的Laravel,比如OP,试试:

$file    = public_path(). "/storage/rhcloud/lobby/0.1.zip";
$headers = array(
   'Content-Type: application/zip',
   'Content-Length: '. filesize($file)
);
return Response::download($file, basename($file), $headers);

相关问题