从非公共存储文件夹热读取文件

问题描述 投票:0回答:2

我想把文件放在非公开的存储文件夹里,我想在前面展示。这将是防止未经授权访问的安全措施。我知道我可以使用

readfile
功能但它不起作用,例如:

readfile('/private/something.jpg')

你能告诉我代码或其他方法来显示非公共存储文件夹中的文件吗?

php laravel security backend storage
2个回答
0
投票

使用

disk
门面上的
Storage
方法来指定要使用的磁盘。

您可以使用以下代码:

$fileContents = Storage::disk('local')->get('my_directory/file.txt');

注意您必须指定要使用的磁盘,因为默认情况下 Laravel 使用允许访问公共文件的

public
磁盘。


0
投票

在 Laravel 中,您可以将文件存储在非公共存储文件夹中,并通过使用 Storage facade 在前端安全地显示它们。'

分步指南: 第 1 步:我们正在创建一个名为“private”的新磁盘,它将文件存储在位于 storage/app/private 的非公共目录中。我们还将可见性设置为“私有”,这样就无法直接从网络访问这些文件。

'disks' => [
    // ...
    'private' => [
        'driver' => 'local',
        'root' => storage_path('app/private'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'private',
    ],
],

第二步: 使用 putFileAs() 方法存储文件:

$file = $request->file('file');
$path = $file->storeAs('private', $file->getClientOriginalName(), 'private');

第三步: 为文件生成一个临时 URL:

$url = Storage::disk('private')->temporaryUrl($path, now()->addMinutes(10));
<a href="{{ $url }}">Download File</a>
© www.soinside.com 2019 - 2024. All rights reserved.