使用 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下载包。
当我存储图片、视频或其他文件等文件时,我不会将它们存储在 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下载包。