mirror of
https://github.com/kuaifan/dootask.git
synced 2026-02-08 07:15:36 +00:00
fix: 无法下载大文件
This commit is contained in:
parent
f1ecf33ce7
commit
e8af0f2ea6
@ -2966,17 +2966,10 @@ class Base
|
||||
*/
|
||||
public static function streamDownload($file, $name = null)
|
||||
{
|
||||
$contentType = 'application/octet-stream';
|
||||
if ($name && !str_contains($name, '.')) {
|
||||
$name .= ".";
|
||||
}
|
||||
//
|
||||
if ($file instanceof \Closure) {
|
||||
return Response::streamDownload($file, $name, [
|
||||
'Content-Type' => $contentType,
|
||||
]);
|
||||
}
|
||||
//
|
||||
if (!$file instanceof File) {
|
||||
if ($file instanceof \SplFileInfo) {
|
||||
$file = new File($file->getPathname());
|
||||
@ -2987,12 +2980,23 @@ class Base
|
||||
if (!$file->isReadable()) {
|
||||
throw new FileException('File must be readable.');
|
||||
}
|
||||
$contentType = $file->getMimeType() ?: $contentType;
|
||||
$content = $file->getContent();
|
||||
return Response::streamDownload(function() use ($content) {
|
||||
echo $content;
|
||||
}, $name, [
|
||||
'Content-Type' => $contentType,
|
||||
// 大于100M直接下载
|
||||
if ($file->getSize() > 100 * 1024 * 1024) {
|
||||
return Response::download($file->getPathname(), $name);
|
||||
}
|
||||
//
|
||||
$filePath = $file->getPathname();
|
||||
return Response::stream(function () use ($filePath) {
|
||||
$fileStream = fopen($filePath, 'r');
|
||||
while (!feof($fileStream)) {
|
||||
echo fread($fileStream, 1024);
|
||||
flush();
|
||||
}
|
||||
fclose($fileStream);
|
||||
}, 200, [
|
||||
'Content-Type' => 'application/octet-stream',
|
||||
'Content-Disposition' => 'attachment; filename="'.$name.'"',
|
||||
'Content-Length' => $file->getSize(),
|
||||
]);
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user