如何使用vuejs从SPA访问/storage -laravel-中的图像

Wii*_*zco 9 laravel single-page-application vue.js

如果我将图像放入“storage/app/public/img/logo.png”并执行: 

$ php artisan storage:link
Run Code Online (Sandbox Code Playgroud)

我如何在 vue 组件中获得那个 logo.png?

<img src="storage/app/public/img/logo.png">
Run Code Online (Sandbox Code Playgroud)

请求它没问题(200)但该图像未呈现,因为是SPA。

谢谢,

Wii*_*zco 9

好了,之后要做:

$ php artisan storage:link
Run Code Online (Sandbox Code Playgroud)

在我的组件中,我使用了:

<img :src="'../storage/img/logo.png'">
Run Code Online (Sandbox Code Playgroud)

谢谢,

  • 使用 vue-cli 构建的 vuejs 前端与 laravel 后端分离但两者都使用相同的域提供服务,有什么解决方法?例如。vuejs-frontend -&gt; /var/html/vuejs/dist laravel-backend -&gt; /var/html/laravel-backend (2认同)

gba*_*zzi 5

当您使用该storage:link命令时,您将在您的storage/app/public文件夹和您的public/storage文件夹之间创建一个符号链接。

所以现在你可以在 url 找到你的文件$BASE_URL/storage/img/logo.png

我建议您asset在刀片模板中使用辅助函数:

<img src="{{ asset('storage/img/logo.png' }}">
Run Code Online (Sandbox Code Playgroud)

注意:一定要在文件夹上设置正确的文件权限,否则Unauthorized在尝试访问它时会出错。

  • 这仅在使用刀片模板时有效。最初的问题是询问如何访问用 Vuejs 编写的 SPA 中的图像,因此这个答案是无关紧要的,并回答了另一个问题 (3认同)