如何在 nuxtjs 中显示来自存储(Laravel)的图像

Posted

技术标签:

【中文标题】如何在 nuxtjs 中显示来自存储(Laravel)的图像【英文标题】:how show image from strorage (Laravel ) in nuxtjs 【发布时间】:2020-10-18 21:03:39 【问题描述】:

我想显示所有在 nuxtjs 中的图片,我使用了 storage (Laravel) 来保存文件

<img v-for="(row, index) in files" :src="'storage/' + row" :key="index"    class="img-fluid">

链接如下

http://localhost:3000/storage/example.jpg

但没有显示

我之前测试过,你不认为问题可能来自控制器吗?

public function index()

    $files = scandir(storage_path('app/public/'));
    $allFile = array_diff($files, ['.', '..', '.gitignore']);
    return response()->json($allFile, 200);

【问题讨论】:

【参考方案1】:

这里的问题在于图像路径您需要指定图像文件的确切位置,因此您完成了大部分工作,例如:src="'storage/' + row",但由于您的图像的实际路径是比如http://localhost:8000/storage/example.jpg(Laravel 应用的基本 URL)。

如果 Laravel 和 Nuxt.js 应用程序在同一个端口和主机下服务

您需要在 src 属性中使用前导斜杠来创建准确的路径。

<img v-for="(row, index) in files" :src="'/storage/' + row" :key="index"    class="img-fluid">

如果它们不在同一主机和端口上提供服务

您必须为您的基本 URL 声明一个单独的变量,最好在 .env 文件中,然后引用它并将其添加到您的图像 src 属性中。

假设我们要在.env 文件中定义它,那么它应该是这样的:

//.env
BASE_URL=http://localhost:8000/

然后我们将在我们的 javascript 数据方法中引用它(如果不存在,我们将使用默认值 'http://localhost:8000/')。

data: function() 
    return 
      baseURL: process.env.BASE_URL || 'http://localhost:8000/ OR http://site.test/'
    
  

在最后一步中,我们会将它添加到我们的图像src 属性中,如下所示:

<img v-for="(row, index) in files" :src="baseURL + 'storage/' + row" :key="index"    class="img-fluid">

【讨论】:

以上是关于如何在 nuxtjs 中显示来自存储(Laravel)的图像的主要内容,如果未能解决你的问题,请参考以下文章

如何使用异步在 nuxtjs 中显示单独的错误消息

Vue 2 和 NuxtJS - 来自父级的样式子组件

NuxtJS 中的预加载页面

如何在组件中从 nuxtjs 的 auth 模块加载数据

如何在 NuxtJs 上导入 Facebook Pixel [关闭]

如何在nuxt js中声明条件语句