HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //home/xedaptot/iphim.naniguide.com/common/Files/Response/StreamedFileResponse.php
<?php

namespace Common\Files\Response;

use Common\Files\FileEntry;
use Illuminate\Support\Str;
use Symfony\Component\HttpFoundation\StreamedResponse;

class StreamedFileResponse implements FileResponse
{
    /**
     * @param FileEntry $entry
     * @param array $options
     * @return mixed
     */
    public function make(FileEntry $entry, $options)
    {
        $downloadName = str_replace(
            ['%', '/'],
            '',
            $entry->getNameWithExtension(),
        );

        $path = $entry->getStoragePath($options['useThumbnail']);
        $response = new StreamedResponse();
        $disposition = $response->headers->makeDisposition(
            $options['disposition'],
            $downloadName,
            Str::ascii($downloadName),
        );

        $fileSize = $options['useThumbnail']
            ? $entry->getDisk()->size($path)
            : $entry->file_size;

        $response->headers->replace([
            'Content-Type' => $entry->mime,
            'Content-Length' => $fileSize,
            'Content-Disposition' => $disposition,
            'Cache-Control' => 'private, max-age=31536000, no-transform',
            //'X-Accel-Buffering' => 'no',
        ]);
        $response->setCallback(function () use ($entry, $path) {
            $stream = $entry->getDisk()->readStream($path);
            if (!$stream) {
                abort(404);
            }

            while (!feof($stream)) {
                echo fread($stream, 2048);
            }
            fclose($stream);
        });
        return $response;
    }
}