如何从Laravel中的Storage / App目录访问文件

时间:2019-05-09 09:12:47

标签: laravel

我要访问文件storage/app/15573877669649.jpg

上传文件的代码

$file = $request->file('cover_image');
$fileName = time().rand(111, 9999).".".$file->getClientOriginalExtension();
Storage::disk('local')->put($fileName, file_get_contents($file));

用于检索blade.php文件中文件的代码

<img src = "{{ URL::to('/').Storage::url($article->coverImage) }}" alt="image">

返回

http://127.0.0.1:8000/storage/15573877669649.jpg

我尝试手动放置http://127.0.0.1:8000/storage/app/15573877669649.jpg,但它也不起作用

2 个答案:

答案 0 :(得分:1)

  • 在项目内部打开命令行
  • 输入php artisan storage:link

现在可以在“ /storage/file.jpg”下访问您的文件

/导致public

/storage/通过链接将您引向storage/app/public

答案 1 :(得分:0)

默认情况下,Laravel的Storage::('local')无法从公众访问; Storage::('public')是将由命令php artisan storage:link

发布的

因此对于您的示例代码,您可以这样做:

上传文件

$file = $request->file('cover_image');
$fileName = time().rand(111, 9999).".".$file->getClientOriginalExtension();
Storage::disk('public')->put($fileName, file_get_contents($file));

在blade.php文件中

<img src = "{{ URL::to('/').Storage::disk('public')->url($article->coverImage) }}" alt="image">

// Or simpler
<img src = "{{ asset("/storage/$article->coverImage") }}" alt="image">

有关“磁盘”的更多详细信息,请检查/config/filesystems.php中的配置文件,并参考官方文档的Public Disk部分


并且,请记住在Web服务器中启用以下符号链接设置

// Apache:
<Directory>
    Options FollowSymLinks
</Directory>

// Nginx:
{
    disable_symlinks off;
}