1

我上传并存储图片。在我的Blade.php 中,我有这一行:

<img src="{{ storage_path('app\\'. $image) }}" />

此行生成此行:

<img src="C:\laragon\www\ProjectName\storage\app\uploads/images/IQeJo4w9lKqSxufTySpYKv1m9Z0TOV3PIYIvlN3g.jpeg" />

该图像没有出现,但是如果我将链接复制/C:\粘贴到我的浏览器 urlfield 中,我可以看到该图像。

你知道用 img 标签显示图像吗?

4

4 回答 4

1

storage_path将为您提供本地文件系统上文件的绝对路径。您永远不应将其用作公共 URL。它也行不通。您可以看到此图像的原因是 Web 服务器可能在您自己的系统上运行。

文件storage夹中的文件位于网站托管部分之外,因此无法直接访问。

如果您希望直接访问您的文件,您应该查看公共磁盘。

于 2019-03-12T15:13:27.220 回答
1

您将图像存储在 中/storage/app/uploads,这不是公共目录。公共目录是/storage/app/public.

要将图像保存到公共磁盘,请在文件上传控制器中尝试:

$path = $request->file('image')->storePublicly('uploads/images');

(保存$path到数据库)

然后在您的刀片视图中:

<img src="{{ Storage::disk('public')->url($path) }}">

为此,如果您还没有链接公共存储磁盘,您还需要:

php artisan storage:link

storage_path()为您提供文件的内部路径,该路径不适用于创建可以由网络服务器提供的图像的链接。

于 2019-03-12T16:09:08.270 回答
1

如果您创建了符号链接,您可以使用

$path = asset('storage/' . $image);

试着让我知道。

于 2019-03-12T15:30:44.943 回答
0

@Travis:我有这个:

'url' => env('APP_URL', 'http://localhost'),

'asset_url' => env('ASSET_URL', null),
于 2019-03-13T12:31:33.777 回答