如何使用laravel 8正确上传图片?

问题描述 投票:0回答:1

我有一个问题,我正在使用 Laravel 8,我正在创建一个允许上传图像的函数,但是当我通过视图中的标签调用它们时,它给了我一个 404 错误,我使用 php artisan storage:link 来生成链接但它仍然不允许我显示图像,还要检查图像是否正确保存在我的存储/公共文件夹中并且图像位于那里

控制器

public function store(Request $request)
{
    $user = Auth::user(); 

    $request->validate([
        'image_path' => 'required|image|mimes:jpeg,png,jpg,gif',
        'titulo' => 'required|string',
        'description' => 'required|string',
    ]);

    $imagePath = $request->file('image_path')->store('public');

    PublicationModel::create([
        'image_path' => $imagePath,
        'title' => $request->input('title'),
        'description' => $request->input('description'),
    ]);

    return back()->with('success', 'Success.');
}

这是我的标签:

<img src="{{ Storage::url($publication->image_path) }}" class="card-img-top" alt="Publication">
laravel storage
1个回答
0
投票

存储中的正确路径:验证 storage/app/public 目录是否包含位于正确位置的图像。很高兴您强调了照片就在那里。

符号链接: 确保已创建从 public/storage 到 storage/app/public 的符号链接。您可以使用以下 Artisan 命令生成符号链接:

php artisan storage:link

此命令在公共目录中创建一个指向存储目录的符号链接。

存储路径::url: 仔细检查 Storage::url 路径。您当前正在使用

{{ Storage::url($publication->image_path) }}
。确保 $publication->image_path 包含 storage/app/public 目录中图像的正确相对路径。

如果图片直接存储在公共磁盘中,可能需要调整路径。如果您将图像存储在子目录中(例如 public/images),则路径应包含该子目录。

示例:

{{ Storage::url('images/' . $publication->image_path) }}

在浏览器中检查 URL: 检查浏览器中的 HTML 输出并检查为图像生成的 URL。确保 URL 正确并指向有效的图像文件。

文件权限: 确保存储目录和文件具有正确的权限。 Web 服务器应该具有从存储目录读取所需的权限。

© www.soinside.com 2019 - 2024. All rights reserved.