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

Understanding file storage and protecting contents Laravel 5

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

有什么方法可以将image/file保存到存储系统的私人文件夹中,然后通过视图访问它?如果我这样做,它是否会保留该图像 "private" 以便它不会存储在某个不在 "public" 文件夹中的生物的缓存中?符号链接是否以我想要的方式保护存储文件夹中的文件,或者它是否真的使所有文件都可用于 public?

如能帮助理解这一点,我们将不胜感激。

你说的是正确的 storage/app/public 中的文件是 public。这就是为什么你必须创建一个私人目录,比方说 storage/app/private,然后在这里上传你的敏感文件。

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

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

如果您想访问您的私人文件。为此创建一条路线:

Route::get('/private-files/{file?}','FileController@get')->where('file', '(.*)');

然后在FileController.php中,你会有这样的东西(这只是一个例子,编辑这里的代码来检查用户是否是admin):

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

 }