0

我已经使用这些代码行在 laravel 中上传了我的图片:

        if($request->hasFile('filea'))

    {   

        $filepath = $request->filea->getClientOriginalName();

        $request->filea->storeAs('public/upload',$filepath);

    }

并将文件名存储在数据库中。图像已成功存储在我的硬盘中。当我尝试在模板中渲染图像时,我使用了这个:

<img src="{{ asset('public/upload/'.$user->imagepath) }}/>"

这将创建此链接:

<img src="http://localhost:28965/public/upload/IMG_20170906_105035.jpg"/>

也试过这个:

<img src="{{ asset('upload/'.$user->imagepath) }}/>"

但是没有图像被渲染。这里有什么语法错误

4

3 回答 3

0
<img src="{{ asset('upload/'.$user->imagepath) }}">

如果文件存在于 public/uploads 中,这应该可以工作,并检查 .env 文件中的 APP_URL。
如果您的文件在您的存储中请尝试:
storage_path('app/public/upload'.$user->imagepath)
喜欢:

<img src="{{ storage_path('app/public/upload'.$user->imagepath) }}">
于 2018-06-18T16:49:40.737 回答
0

您是否创建了符号链接?,您可以使用 storage:link Artisan 命令:

php artisan storage:link

于 2018-06-18T17:01:57.993 回答
0

我找到了解决方案。发生的事情是这样的:我已经在 laravel 中上传了图片,所以它将存储在 storage/app/public 中。但是,如果我尝试通过资产访问它将无法正常工作,因为资产是指公用文件夹。所以我读了 config/filesystems.php 有这些行:

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

所以这意味着访问 localhost:port/storage 将链接到 storage/app/public 文件夹。所以我运行了这个命令

php artisan storage:link

在渲染的图像源中,我写了这个:

<img src="{{ url('storage/upload/'.$user->imagepath) }}" />

它奏效了。

于 2018-06-19T10:44:02.107 回答