JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbr{ gilour

File "StreamedFileResponse-20260314160756.php"

Full Path: /home/markqprx/iniasli.pro/Files/Response/StreamedFileResponse-20260314160756.php
File size: 1.42 KB
MIME-type: text/x-php
Charset: utf-8

<?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)
    {
        $path = $entry->getStoragePath($options['useThumbnail']);
        $response = new StreamedResponse();
        $disposition = $response->headers->makeDisposition(
            $options['disposition'],
            $entry->getNameWithExtension(),
            str_replace('%', '', Str::ascii($entry->getNameWithExtension())),
        );

        $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',
        ]);
        $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;
    }
}