繁体   English   中英

使用 Laravel 处理私人文件

[英]private file handling with laravel

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

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

如何从私人文件夹中输出多个图像?

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

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

是的,如果您将图像存储在非公开访问的路径中,这几乎是唯一的方法。

为了加快速度,您可以通过普通的 PHP(标题 + 读取文件)来完成:

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

您可以使用缓存标头和任何其他风格的东西来优化它。

对于多个图像,您必须对每个图像发出单独的请求,或者您必须以某种方式存档图像并将其发送给用户,但显然,除非未实现的下载包,否则用户将无法查看。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM