我一直在尝试在the doc之后将文件存储到(并从storage/app/
获取)。
运行php artisan storage:link
后,我可以看到有一个指向puiblic文件夹的链接。
如果我使用以下代码放置文件......
Storage::put('/images/blah.png', $file);
......存储空间将如下所示。
我不确定链接是否正常工作,因为无法检索此blah.png
。
到目前为止,我已将storage
的访问级别更改为chmod -R 755 storage/
,并输入完整的网址(http://localhost:8000/storage/images/blah.png
。这是asset('storage/images/blah.png')
返回的内容。不过,我收到404错误(未找到)。
在config/filessystems.php
。默认设置为local
。 (即'default' => 'local'
)
你看到我做错了吗?
任何建议都将受到赞赏。
PS
这是公共磁盘配置的样子......
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL') . '/storage',
'visibility' => 'public',
],
//env('APP_URL').'/storage' returns 'root/storage/app/public'
答案 0 :(得分:0)
公共磁盘用于公开发布的文件 无障碍。默认情况下,公共磁盘使用本地驱动程序和 将这些文件存储在storage / app / public中。使它们可以访问 在网络上,你应该创建一个从公共/存储到的符号链接 存储/应用程序/公共
要创建从公共/存储到存储/应用/公共的符号链接,请转到根文件夹:
ln -s storage/app/public public/storage
然后,您可以将文件保存到storage / app / public:
Storage::put('/public/images/blah.png', $file);
// the blah.png is located at storage/app/public/images/blah.png
// you can also get the file path by
// $image_path = storage_path() . "/app/public/images/blah.png";
然后,您可以访问图像文件:
http://{domain}/storage/images/blah.png
答案 1 :(得分:0)
在控制器中
Storage::disk('images')->get('firmas.jpg');
并在文件config / filesystems.php
中'default' => env('FILESYSTEM_DRIVER', 'local'),
和磁盘
'disks' => [
'local' => [
'driver' => 'local',
'root' => storage_path('app'),
],
'images' => [ // used for Backpack/CRUD (in elFinder)
'driver' => 'local',
'root' => storage_path('app/pdfs'),
],
'public' => [
'driver' => 'local',
'root' => storage_path('app/public'),
'url' => env('APP_URL').'/storage',
'visibility' => 'public',
],
's3' => [
'driver' => 's3',
'key' => env('AWS_KEY'),
'secret' => env('AWS_SECRET'),
'region' => env('AWS_REGION'),
'bucket' => env('AWS_BUCKET'),
],
]