当我尝试存储文件时,不会将其存储在storage \ app \ public中

时间:2019-06-14 09:50:20

标签: php html laravel

我的问题是存储功能没有将歌曲存储在storage / app / public中 它将它存储在存储设备/应用程序中,因此,我无法链接它,也无法播放歌曲。

我曾尝试在store函数中编写公共目录,但是当我尝试播放歌曲时,他看不到文件,因为公共目录位于 像这样的路径: http://127.0.0.1:8000/storage/public/the_song

控制器:

  public function store(Request $request)
  {
     $song = $request->the_song->store('songs');

     $music = Music::create([
        'sound'=> $song,
        'name'=> $request->name
     ]);

     session()->flash('success', 'The Song Successfully Saved');
     return redirect(route('music.index'));

   }

播放歌曲:

<audio controls autoplay>

  <source src="{{ asset($song->sound) }}" type="audio/ogg">
  <source src="{{ asset($song->sound) }}" type="audio/mpeg">

</audio>

1 个答案:

答案 0 :(得分:1)

默认情况下,Laravel使用local文件系统磁盘(请参见config/filesystems.php)。要将其保存在public中,您必须明确使用它:

$song = $request->the_song->store('songs', 'public');

以及在检索文件时:

Storage::disk('public')->url($song->sound)

或者您也可以将默认磁盘设置为public