Laravel - 保存在存储文件夹中的图像未显示给用户

时间:2018-05-17 15:37:39

标签: php laravel laravel-5

我有这个代码将图像保存在storage / app / uploads文件夹中

 $image_main = Image::where('property_id', $id)->get();

$file = $request->file('file');
      $destinationPath = 'uploads';
      $i = 0;
      foreach ($file as $file1) {
          $i++;
          $extension = $file1->getClientOriginalExtension();
          $path = $file1->storeAs(
              $destinationPath, $i.time().".".$extension
          );

这是我的刀片文件

@foreach ($image_main as $images)
        <img src="{{"/storage/app/".$images->filename}}

该文件保存在storage / app / uploads文件夹中,但它没有显示给用户,表示找不到文件。我要在filesystems.php文件中设置任何内容

7 个答案:

答案 0 :(得分:1)

Laravel存储文件系统非常独特。当您进行任何上传时,它将上传到storage/app/public目录。那么如何在public目录中访问它。需要做的是通过运行命令创建符号链接:

php artisan storage:link

因此文件夹storage/app/public会符号链接到public/storage

关注如何放置以及如何检索文件网址documentation。我很确定您缺少的步骤是创建符号链接。

希望它有所帮助。

答案 1 :(得分:1)

如果您将homestead用作Mac上的环境,则需要遵循此条件

 1. Delete your public/storage folder (if any)
 2. Follow these
     1. ssh into your homestead using below command 
     2. cd ~homestead
     3. vagrant up
     4. vagrant ssh
     5. cd Code/PATH_TO_YOUR_APP_ROOT_DIR
     6. php artisan storage:link

 3. access image like this {{ asset('storage/img/myimage.jpg') }}


答案 2 :(得分:1)

答案 3 :(得分:0)

无法从用户访问您的存储文件夹。

您必须通过 Storage :: url()方法:

Storage::url("/storage/app/{$images->filename}")

如:

<img src="{{ Storage::url("/storage/app/{$images->filename}") }}" alt="{{ $images->filename }}" />

https://laravel.com/docs/master/filesystem#retrieving-files

答案 4 :(得分:0)

您无法使用存储文件夹。您需要将图像移动到公共文件夹以从http。

访问

尝试在公用文件夹中创建文件夹调用图像,并将图像上载到该文件夹​​。然后您可以按如下方式访问图像。

<img src="{{ public_path('images/image-name.png')}}" alt="" />

答案 5 :(得分:0)

您已将此行添加到.env文件中

FILESYSTEM_DRIVER = public

之后,您需要在终端中运行此命令

php artisan storage:link

如果仍然无法使用,则需要在链接之前调用存储目录

                <img src="{{ asset('storage/'.$post->image) }}" width="120px" hight="120px" alt="">

答案 6 :(得分:0)

试试这个方法,它会 100% 奏效。

首先创建一个符号链接:php artisan storage:link

查看存储所有图像的公共文件夹,并在 src 中提及这些文件夹名称,并从数据库中找到您的图像名称。

示例:

<img src="/images/posts/{{$post->featured_image}}">

示例:在浏览器中使用链接显示图像的完整路径

<img src="{{asset('/images/posts/'.$post->featured_image)}}">