我正在尝试获取我在存储文件夹中托管的文件的完整 url,但我无法正确获取。我使用 Laravel 7。
我想获取的网址是:
https://www.example.com/panel1/storage/app/folder/file.txt
我尝试了许多不同的方法,但始终没有找到正确的地址。例如:
$url = asset('storage/app/folder/file.txt');
https://www.example.com/panel1/public/storage/app/folder/file.txt
$url = storage_path('app/folder/file.txt');
https://www.example.com/var/www/panel1/storage/app/folder/file.txt
$url = Storage::disk('local')->path('folder');
https://www.example.com/var/www/panel1/storage/app/storage/app/folder/file.txt
$url = Storage::url('app/folder/file.txt');
https://www.example.com/storage/app/folder/file.txt
我已阅读有关创建从存储文件夹到公共文件夹的符号链接的选项,但我担心任何用户都可以访问这些文件,因为它们是私有的,并且它们的内容只能由所有者访问文件。
有人知道我做错了什么以及如何纠正吗?
提前致谢。
答案 0 :(得分:0)
如果文件是私有的,则您无法直接为任何人创建指向它们的 URL。如果您不想公开访问它们,则必须以某种方式代理它们:
考虑这个示例代码:
Route::get('privateFile/{filepath}', function ($filepath) {
// Check if user can access file somehow
return response->download(Storage::disk('local')->path('folder'));
})->where('filepath', '.*')->middleware('auth')->name('privateFileDownload');
然后生成指向您要执行的文件的 URL:
route('privateFileDownload', [ 'filepath' => 'app/folder/file.txt' ]);
这样你就可以控制谁可以下载哪些文件