gpt4 book ai didi

laravel - 了解文件存储和保护内容 Laravel 5

转载 作者:行者123 更新时间:2023-12-04 00:02:35 25 4
gpt4 key购买 nike

我需要帮助理解 Laravel 的文件存储系统。我正在创建一个需要上传用户驾驶执照照片的应用程序。这显然是敏感信息。除非管理员正在查看它,否则我想将此图像保留在 Internet 之外。我的理解是,我必须将内容保存到 storage>app>public 中的 public 目录,并创建指向 public>storage 文件夹的符号链接(symbolic link)。我已经完成了,并且工作正常。我保存了数据库的路径,程序可以显示它,但如果可以避免的话,我不希望东西在公用文件夹中。

有没有办法将图像/文件保存到存储系统中的私有(private)文件夹,然后通过 View 访问它?如果我这样做,它是否会将该图像保持为“私有(private)”,以便它不会存储在某个不在“公共(public)”文件夹中的缓存中?符号链接(symbolic link)是否以我想要的方式保护存储文件夹中的文件,或者它是否真正使所有文件都可供公众使用?

任何有助于理解这一点的帮助将不胜感激。

最佳答案

您所说的是更正 storage/app/public 中的文件是公开的。这就是为什么你必须创建一个私有(private)目录,比如说 storage/app/private ,然后在此处上传您的敏感文件。

您可能想在 config/filesystems.php 中添加磁盘。 :

'private' => [
'driver' => 'local',
'root' => storage_path('app/private'),
],

如果您想访问您的私有(private)文件。为此创建一条路线:
Route::get('/private-files/{file?}','FileController@get')->where('file', '(.*)');

然后在 FileController.php ,你会得到这样的东西(这只是一个例子,在这里编辑代码来检查用户是否是管理员):
<?php
namespace App\Http\Controllers;

use Auth;
use Storage;
use App\Http\Controllers\Controller;

class FileController extends Controller {

public function __construct()
{
$this->middleware('auth');
}

public function get($file)
{
return Storage::disk('private')->get($file);
}

}

关于laravel - 了解文件存储和保护内容 Laravel 5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57462558/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com