Laravel 5未在子文件夹中加载图像
Posted
技术标签:
【中文标题】Laravel 5未在子文件夹中加载图像【英文标题】:Laravel 5 not loading images in subfolder 【发布时间】:2015-09-05 00:48:19 【问题描述】:我正在为我的 laravel 5 项目中的错误寻找解决方案。我的项目在 public_html 文件夹中,所以我的项目运行良好,除了子文件夹中的图像。
这是我的项目结构:
根 laravel public_html index.php 图片 用户 default.jpg我有一个名为 workspace.blade.php 的主模板,在脚本标签中我有一个 js 变量来引用我的项目文件夹图像:
<!-- Scripts -->
<script type="text/javascript">
var Url = ' URL::asset('/'). Lang::getLocale() /';
var resourcesUrl = Url + 'resources/';
var imagesUrl = ' URL::asset('images') ';
var jsUrl = ' URL::asset('js/') ';
</script>
所以我在一个 EJS Javascript 模板中打印我的图像:
<img src="<%= imagesUrl + '/users/default.jpg' %>">
但浏览器控制台总是显示以下错误:
GET http://mydomain.com.co/users/default.jpg 404 (Not Found)
如果我尝试从“images/”文件夹加载图像,效果很好,但如果我尝试从“images/users/”等图像加载子文件夹内的图像,则不再有效。
我已经直接打印了网址,但什么也没发生。错误是laravel将url重定向到路由集合中的路由,并抛出路由错误。
我不知道我是否必须修改我的 .htaccess 文件,但就是这样:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes...
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller...
RewriteCond %REQUEST_FILENAME !-d
RewriteCond %REQUEST_FILENAME !-f
RewriteRule ^ index.php [L]
谢谢你的帮助!
【问题讨论】:
此路径相关问题。图片的 URL 错误,因为您尝试从不存在的路由加载和图片 另请注意,您不能从公用文件夹访问资源文件夹。一种选择是将图像移动到公用文件夹,或者您可以通过使用图像包(如干预图像)动态生成图像来从资源文件夹加载图像 感谢 Digitlimit。路线存在。它根本无法在生产中运行,因此在开发中一切正常。我的图像不在资源文件夹中,因为我的 laravel 安装在根文件夹中。公共文件夹位于我服务器的 public_html 文件夹中。 如果它在开发服务器中工作,那么可能是 htacess 问题 【参考方案1】:你不见了images
<img src="<%= imagesUrl + '/users/default.jpg' %>">
应该是
<img src="<%= imagesUrl + '/images/users/default.jpg' %>">
【讨论】:
当我检查 DOM 时,我看到了正确的路由,所以我的 laravel 应用程序总是在 routes.php (RouteCollection) 中寻找路由,为什么主文件夹 images/ 加载良好? @Brian 你能在这个网址看到你的图片吗http://mydomain.com.co/images/users/default.jpg
【参考方案2】:
我终于找到了错误。只是我的“图像/用户”文件夹和里面的文件没有正确的权限。它有 640 个权限,所以我将其更改为 644。
【讨论】:
以上是关于Laravel 5未在子文件夹中加载图像的主要内容,如果未能解决你的问题,请参考以下文章
NextJs App 在 Azure Web App 中部署时未在 nextjs 公用文件夹中加载图像
带有laravel的DOMPDF - 无法在html文件中加载图像