首页 > 解决方案 > 在视图中显示图像 Laravel 6

问题描述

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

这是我的控制器商店()。

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}') }}" alt="{{$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>

还有我的 config->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'),
    ],

],

标签: phphtmllaravelimageview

解决方案


您需要通过 src 如下。

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

作为存储文件夹

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

推荐阅读