Javascript vue v-for图像未显示。相反,它显示字符串

Javascript vue v-for图像未显示。相反,它显示字符串,javascript,php,laravel,vue.js,v-for,Javascript,Php,Laravel,Vue.js,V For,我想在我的表中显示相应用户的图像。但是,当我执行v-for时,它在表中仅以字符串格式显示图像名称。如何显示图像而不是文本本身?因为在laravel blade中,我可以做一个foreach循环,它直接显示图像。我该怎么办?非常感谢 我的桌子 我的axios代码和v-for <tr v-for="teacher in teachers" :key="teacher.id"> <td>{{teacher.id}}&

我想在我的表中显示相应用户的图像。但是,当我执行
v-for
时,它在表中仅以字符串格式显示图像名称。如何显示图像而不是文本本身?因为在laravel blade中,我可以做一个
foreach
循环,它直接显示图像。我该怎么办?非常感谢

我的桌子

我的axios代码和v-for

  <tr v-for="teacher in teachers" :key="teacher.id">
                            <td>{{teacher.id}}</td>
                            <td>{{teacher.image}}</td>
  </tr>


  methods:{
            getTeachers(){
                axios.get('getTeachers')
                    .then((res)=>{
                        this.teachers = res.data
                    })
                    .catch((e)=>{
                        console.log(e)
                    })
            }
        }

{{teacher.id}
{{teacher.image}
方法:{
getTeachers(){
axios.get('getTeachers'))
。然后((res)=>{
this.teachers=res.data
})
.catch((e)=>{
控制台日志(e)
})
}
}

您试图显示图像,因此,应使用:

<img v-bind:src="teacher.image" />

您需要将图像url包装在适当的HTML标记中

类似于:

<img :src="teacher.image">

执行此操作时,您正在将图像添加到HTML页面中,语法“:src”用于将HTML属性“src”与vue变量(在本例中为图像链接/名称)绑定


如果之后图像未显示,则链接无效。检查图像url,看看是否可以直接从浏览器中获取。若服务器在那个url上并没有返回适当的图像,那个么它将无法工作。使用“alt”属性设置文本而不是图像,以查看是否发生这种情况。

问题在于您保存图像的方式。您在数据库中保存了唯一的图像名称,而不是路径。无论何时通过laravel中的表单上传内容。它将文件保存在公共/存储中

首先运行命令

php artisan storage:link

这是你能做的。提交表单时,使用以下代码将图像保存在db中(我假设您正在系统中注册教师)

之后,图像列将包含图像的总路径

     if(!empty($request->file('image_file'))){
                $path = storage_path('public/teacher-images/');

                if(!File::isDirectory($path)){
                    File::makeDirectory($path, 0755, true, true);
                }
                $image_path = Storage::disk('public')->put('teacher-images', $request->file('image_file'));
                $teacher->image = isset($image_path) ?  "storage/".$image_path : "";
            }

之后,您可以通过附加serverurl在模板上显示该图片



您需要添加图像标记,然后提供图像的完整路径作为源。例如:



如果您使用的是Laravel的内置存储,我建议您从控制器返回映像的完整路径,即使用
storage::url()
获取映像的完整路径。

您的服务器只能找到文件名。所以,我建议您从控制器传递图像链接的完整路径。使用资产()/Storage::url()


这是个好办法

您必须包含一些HTML来说明此字符串是图像-
您只是在打印路径,尝试使用
{{teacher.id}
它在我的组件sir@albertosinigagaliai不知道sir为什么会有此响应
157399337.jpeg:1 GEThttp://127.0.0.1:8000/1573999337.jpeg 404(未找到)
它给了我一个
157399337的响应。jpeg:1gethttp://127.0.0.1:8000/1573999337.jpeg 404(未找到)
我不知道为什么?在laravel项目的公用文件夹或公用文件夹的子文件夹中的图像中?您的链接无效。检查您的localhost服务器是否在该位置实际拥有映像。如果你有一个带有资源的“公共”文件夹,图像应该在那里。您使用的路径可以是相对路径,也可以是绝对路径。请参见此处以获得澄清:图像位于我的laravel项目Sir的my
public/img
文件夹中。请参见此处以获得更好的理解:url应为“img/imageName”。(不要在路径中写入公共路径)例如::src=“img/157399337.jpeg”或:src=“/img/157399337.jpeg”取决于您想要的是相对路径还是绝对路径我将图像保存在
public/img
路径中,先生,我可以查看它并将其保存在您的存储器中!现在运行上面的命令,您可以将server\u url/public/img/附加到模板中的img src。会像这样吗,先生<代码>
它向我显示了错误,先生,请这样帮助我:实际上,当你保存一些东西时,它存储在存储文件夹中。通过运行命令php-artisan-storage:link,laravel将创建一个存储文件夹的符号链接到您的公共目录中。您是通过表单提交保存教师图像还是手动将图像放入公共/img文件夹?谢谢,先生,这对我很有效。你能解释一下为什么我应该把它放在
存储
目录而不是
公共
文件夹吗?@Vince很高兴知道它起作用了。默认情况下,Laravel的公共目录是入口点。当您运行
php-artisan-storage:link
时,Laravel的文件系统将公开上传的文件符号链接到公共目录。你应该仔细阅读他们的文件,了解所有这些。以下是指向文档的链接: