使用 laravel 处理私人文件

private file handling with laravel

当我存储图片、视频或其他文件等文件时,我不会将它们存储在 public 文件夹中,而是存储在 public 无法访问的私人文件夹中。因为只有某些用户才能访问这些文件。

例如,使用以下示例函数,我加载图像并将它们放入视图中...这是正确的方法还是有更好的方法可以减少加载时间?

如何从私人文件夹输出多张图片?

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

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

是的,如果您将图像存储在 non-publicly 可访问路径中,那几乎是唯一的方法。

要加快速度,您可以通过简单的 PHP(headers + 读取文件):

       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);

您可以使用缓存 headers 和任何其他风味内容对其进行优化。

对于多张图片,您必须对每张图片分别提出请求,或者您必须以某种方式存档图片并将其发送给用户,但很明显,除非 un-achieved下载包。