обработка личных файлов с laravel - PullRequest
0 голосов
/ 01 марта 2020

Когда я храню такие файлы, как изображения, видео или другие файлы, я храню их не в папке publi c, а в личной папке, которая не является общедоступной. Потому что только определенные пользователи должны иметь доступ к файлам.

С помощью следующей функции примера, например, я загружаю изображения и помещаю их в вид ... это правильный путь или есть лучший способ это может занять меньше времени загрузки?

Как вывести несколько изображений из личной папки?

public function thumbnailfeedback($uuid)
    {
        $feedbackimage = FeatureRequest::findOrFail($uuid);
        $thumbnail = storage_path($feedbackimage->image_thumbnail);

        return Image::make($thumbnail)->response();
    }

1 Ответ

0 голосов
/ 01 марта 2020

Да, это практически единственный способ, если вы храните изображения в недоступном для общественности пути.

Для ускорения вы можете сделать это с помощью простого PHP (заголовки + чтение файла):

       $type = "image/jpeg";
       header('Content-Type: image/jpeg');
       header('Content-Length: ' . filesize($thumbnail));
       readfile($thumbnail);
       exit;

или если вы хотите сохранить его в коде типа Laravel, то что-то вроде этого вполне подойдет

$headers = [
    'Content-Type' => 'image/jpeg', // if single type if not determine type
    'Content-Length' => filesize($thumbnail),
];
return response()->file($thumbnail, $headers);

Вы можете оптимизировать это с помощью кэширующих заголовков и любых других другой ароматизатор.

Для нескольких изображений вам придется делать отдельные запросы для каждого изображения, или вам нужно каким-то образом архивировать изображения и отправлять их пользователю, но, очевидно, пользователь не сможет их просмотреть, если только недостигнутый загруженный пакет.

...