在视图中显示图像 Laravel 6

Posted

技术标签:

【中文标题】在视图中显示图像 Laravel 6【英文标题】:Display image in a view Laravel 6 【发布时间】:2020-12-04 10:52:49 【问题描述】:

我无法在视图中的标签 img 中显示我的图像。我可以将上传的图片保存在 storage->app->public->books 中,并将图片名称也保存在我的数据库中。但是在我运行 php artisan storage:link 以访问我在 public->storage 中的文件之后,但无论我使用asset() 或 url() 方法,我都可以' t 在 img 标签中显示我的图像,只是 属性,有人知道我在做什么错吗?

这是我的控制器 store()。

public function store(Request $request)

    // Handle File Upload
    if($request->hasFile('book_image'))
        // Get filename with the extension
        $filenameWithExt = $request->file('book_image')->getClientOriginalName();
        // Get just filename
        $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
        // Get just ext
        $extension = $request->file('book_image')->getClientOriginalExtension();
        // Filename to store
        $fileNameToStore= $filename.'_'.time().'.'.$extension;
        // Upload Image
        $path = $request->file('book_image')->storeAs('books', $fileNameToStore);
     else 
        $fileNameToStore = 'noimage.png';
    
    //save in database
    $itens = \App\Book::create([
        'book_name' => mb_strtolower($request->book_name),
        'author_name' => mb_strtolower($request->author_name),
        'publishing_name' => mb_strtolower($request->publishing_name),
        'description' => $request->description,
        'release_date' => $request->release_date,
        'category' => mb_strtolower($request->category),
        'book_image' => $fileNameToStore
    ]);

    flash('Livro criado com sucesso !')->success();

    return redirect()->route('admin.books.index');

这是我要显示的 html

   @foreach($books as $book)
    <tr>
        <td><input type="checkbox" class="checkthis" /></td>
        <td>
            <img style="width: 80px;height: 80px" src=" url('books/$book->book_image') " >
        </td>
        <td>$book->book_name</td>
        <td>$book->author_name</td>
        <td>$book->publishing_name</td>
        <td>$book->release_date</td>
        <td>
   </tr>

还有我的配置->filesystems.php

    'disks' => [

    'local' => [
        'driver' => 'local',
        'root' => storage_path('app'),
    ],

    'public' => [
        'driver' => 'local',
        'root' => storage_path('app/public'),
        'url' => env('APP_URL').'/storage',
        'visibility' => 'public',
    ],

    's3' => [
        'driver' => 's3',
        'key' => env('AWS_ACCESS_KEY_ID'),
        'secret' => env('AWS_SECRET_ACCESS_KEY'),
        'region' => env('AWS_DEFAULT_REGION'),
        'bucket' => env('AWS_BUCKET'),
        'url' => env('AWS_URL'),
        'endpoint' => env('AWS_ENDPOINT'),
    ],

],

【问题讨论】:

【参考方案1】:

你需要传递 src 如下。

 src=" url('books/'.$book->book_image) "

作为存储文件夹

src=" asset('storage/books/'.$book->book_image) "

【讨论】:

非常感谢它为我工作!我使用了 src=" asset('storage/books/'.$book->book_image) " 并得到了它。我想我必须回到 php 连接变量 rsrs。

以上是关于在视图中显示图像 Laravel 6的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 8 中的 storage/app/public/student_img 文件夹中的视图刀片中显示图像

如何从 laravel 中的某个路由页面检索图像或文件?

在刀片视图中显示路线的结果(Laravel)

Laravel中的图像路线[关闭]

Laravel 5.2 - 显示数据库中的第一张图片

Laravel 存储符号链接图像视图