Laravel 获取存储在存储公共文件夹中的文件的公共 URL
Posted
技术标签:
【中文标题】Laravel 获取存储在存储公共文件夹中的文件的公共 URL【英文标题】:Laravel get public url for file stored in storage public folder 【发布时间】:2021-09-08 17:05:01 【问题描述】:在 Windows 上,我有 Xampp。我的应用程序在 Anuglar 和 Laravel 8 中
我将文件添加到存储文件夹中的公共文件夹。
filesystem.php
中的配置:
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
在.env
文件中:
APP_URL=http://localhost:8082/prftbx-crm-api/public
公用文件夹中的文件:
Directory of C:\xampp\htdocs\crm-api\storage\app\public
06/25/2021 11:01 AM <DIR> .
06/25/2021 11:01 AM <DIR> ..
04/26/2021 10:57 PM 14 .gitignore
06/25/2021 11:01 AM 510 381787c3ad1442cc882ee427e93af805.txt
在 Laravel 中,我使用方法返回 url:
$fileDTO->filePath = Storage::url($fileEntity->file_name);
而且我有地址:
/storage/381787c3ad1442cc882ee427e93af805.txt
当我在浏览器中输入 url 时:
http://localhost:8082/crm-api/public/storage/381787c3ad1442cc882ee427e93af805.txt
我收到404
,找不到文件
【问题讨论】:
【参考方案1】:首先运行以下命令
php artisan storage:link
那么你可以
http://localhost:8082/storage/381787c3ad1442cc882ee427e93af805.txt
将应用网址保留为
APP_URL=http://localhost:8082
如文件所述
应用程序文件系统中包含的公共磁盘 配置文件适用于将要公开的文件 无障碍。默认情况下,公共磁盘使用本地驱动程序和 将其文件存储在 storage/app/public 中。
要使这些文件可以从 Web 访问,您应该创建一个 从 public/storage 到 storage/app/public 的符号链接。利用 此文件夹约定会将您可公开访问的文件保存在一个文件夹中 使用零时可以轻松跨部署共享的目录 像 Envoyer 这样的停机部署系统。
要创建符号链接,您可以使用 storage:link Artisan 命令:
php artisan storage:link 一旦文件被存储并且符号 链接已创建,您可以使用 资产助手:
参考:https://laravel.com/docs/8.x/filesystem#the-public-disk
【讨论】:
以上是关于Laravel 获取存储在存储公共文件夹中的文件的公共 URL的主要内容,如果未能解决你的问题,请参考以下文章