【问题标题】:How to retrieve images from storage folder to view in blade?如何从存储文件夹中检索图像以在刀片中查看?
【发布时间】:2019-11-13 02:33:18
【问题描述】:

我正在尝试访问存储文件夹中的图像以在刀片视图中显示。图片在 storage/app/photos 中。

我已经运行了一个命令 php artisan storage:link 但仍然无法显示图像。

这是我的家庭控制器

public function detailPro($id) {
    $products=DB::table('products_photos')
         ->join('products','products_photos.product_id','products.id')
         ->get();
         //dd($products);
    return view('front.product_detail', compact('products'));
}

这是我的 detail.blade.php

@foreach($products as $product)
   <div class="col-md-6 col-xs-12">
   <div class="thumbnail">
     </div>
     <img src="{{ url('storage/app/photos/'.$product->filename) }}" style="width:200px;" alt="">
   </div>
@endforeach

这是我如何将图像保存到数据库的逻辑

public function store(Request $request)
{
    $product = Product::create($request->all());
    foreach ($request->photos as $photo) {
        $filename = $photo->store('photos');
        ProductsPhoto::create([
            'product_id' => $product->id,
            'filename' => $filename
        ]);
    }
    return 'Upload successful!';
}

图片没有出现,显示的网址是这个“http://127.0.0.1:8000/storage/app/photos/photos/xPNOQQTaTjPaKUClAHOxx7NEjsNLHguhVuAryZEg.jpeg”。

【问题讨论】:

    标签: php laravel laravel-blade


    【解决方案1】:

    你应该检查this,如果你已经运行php artisan storage:link,你可以使用Storage::url('url')

    @foreach($products as $product)
       <div class="col-md-6 col-xs-12">
       <div class="thumbnail">
         </div>
         <img src="{{  Storage::url($product->filename) }}" style="width:200px;" alt="">
       </div>
    @endforeach
    

    将您的 store 方法更改为

    public function store(Request $request)
    {
        $product = Product::create($request->all());
        foreach ($request->photos as $photo) {
            $filename = $photo->store('public/photos');
            ProductsPhoto::create([
                'product_id' => $product->id,
                'filename' => $filename
            ]);
        }
        return 'Upload successful!';
    }
    

    【讨论】:

    • 我这样做了,但仍然没有显示,但网址已更改为 http://127.0.0.1:8000/storage/photos/xPNOQQTaTjPaKUClAHOxx7NEjsNLHguhVuAryZEg.jpeg@Salman
    • 您为图像存储的数据库中的路径是什么?你有没有运行命令php artisan storage:link?
    • 我更新了问题以包含有关如何将照片保存到数据库的逻辑。是的,我确实运行了命令并得到了这个 The [public/storage] directory has been linked. 。这就是文件夹结构的样子 imgur.com/a/cOlT0KN @Salman
    • 你可以尝试返回return $filename = $photo-&gt;store('photos');这个返回什么?
    • 它返回这个photos/iPmje1lWL07VddO2NqtWTGLbhforydCdpEwjpDJn.jpeg@Salman
    【解决方案2】:
    1. 使用文件系统“公共”配置:
                'driver' => 'local',
                'root' => storage_path('app/public'),
                'url' => env('APP_URL').'/storage',
                'visibility' => 'public',
    
    1. 运行 php artisan storage:link
    2. 将照片移至目录“storage/app/public/photos”
    3. 详细.blade.php使用
    <img src="{{ url('/storage/'.$product->filename)}}" style="width:200px;" alt="">
    

    你会没事的;)

    【讨论】:

      【解决方案3】:

      在你的刀片上,试试这个:

      @foreach($products as $product)
         <div class="col-md-6 col-xs-12">
         <div class="thumbnail">
           </div>
           <img src="{{ url('photos/'.$product->filename) }}" style="width:200px;" alt="">
         </div>
      @endforeach
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-25
        • 2021-09-21
        • 2016-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-08-15
        相关资源
        最近更新 更多