【发布时间】:2023-03-24 01:45:01
【问题描述】:
我一直在关注这个thread
但是,到目前为止还不足以解决我的问题,我想问一下这个问题的最佳实践或解决方案
这是我的控制器代码:
if($request->hasfile('news_photo_url'))
{
$image = $request->file('news_photo_url');
$name=$image->getClientOriginalName();
$image_path = public_path().'\\img\\news';
$image_path_to_db = '\\img\\news\\'.$name;
$image->move($image_path,$name);
}
这就是我加载图像的方式,
<img src="{{ asset($news->news_photo_url) }}" alt="">
这在我的本地非常好,
但共享主机 cpanel 的情况有所不同,我的应用程序位于此处
home/laravel/
而我的公众号 (index.php) 位于此处
home/public_html/name/
如何正确解决这个问题?
由于添加了这行代码也没有用,
$app->bind('path.public', function() {return __DIR__; });
因为这只是告诉公众在这里,但是存储在db中的路径会有所不同
http://xxx.xxx.com/home/user/public_html/afe1f78ef6233580f2739a69be00027f.jpg
谢谢你
【问题讨论】:
-
顺便说一句,我也尝试修改控制器的路径,但它也无济于事:(
-
嗯...我不确定我是否了解您的问题。但我认为您似乎使用错误的一件事是您的资产助手。
src="{{ asset($news->news_photo_url) }}"应该类似于src="{{ asset('/img/news/' . $news->news_photo_url) }}"根据您的控制器。 -
道歉,我自己真的很难解释,我的意思是,这种情况一直都在发生吗?这可能超出主题,但共享主机中的 laravel 应用程序文件夹不应位于 public_html 中,对吗?
-
我想避免修改那个资产助手..我也尝试将这个
$app->bind('path.public', function() {return __DIR__; });修改为$app->bind('path.public', function() {return __DIR__.'img/news'; });但不是将文件移动到该文件夹,而是创建另一个文件夹名称“img/news” -
好吧,我认为放置公用文件夹的最常见位置是框架中的预期位置,该框架位于项目的根目录中,但我建议您仍然可以将其放置在其他位置您考虑配置资产 url,您可以在
app.php文件中查看此配置,或将其添加到您的 .env 中,名称为ASSET_URL
标签: laravel upload cpanel move filepath