php 从非公用存储文件夹中读取文件

x33g5p2x  于 2023-03-28  发布在  PHP
关注(0)|答案(2)|浏览(118)

我想将文件存储在非公共存储文件夹中,并且我想在前面显示。这将是对未经授权的访问的安全性。我知道我可以使用readfile功能,但它不起作用,例如:
readfile('/private/something.jpg')
你能告诉我代码或其他方法来显示文件从非公共存储文件夹?

mrphzbgm

mrphzbgm1#

Storage外观上使用disk方法指定要使用的磁盘。
您可以使用以下代码:

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

注意需要指定要使用的磁盘,因为Laravel默认使用public磁盘,该磁盘允许访问公共文件。

fae0ux8s

fae0ux8s2#

在Laravel中,您可以将文件存储在非公共存储文件夹中,并使用存储外观在前端安全地显示它们。
分步指南:第一步:我们创建了一个名为“private”的新磁盘,它将把文件存储在一个位于storage/app/private的非公共目录中。我们还将可见性设置为“private”,这样就不会直接从网络上访问这些文件。

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

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

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

步骤3:为文件生成临时URL:

$url = Storage::disk('private')->temporaryUrl($path, now()->addMinutes(10));
<a href="{{ $url }}">Download File</a>

相关问题