在共享主机上托管时如何解决 laravel 的图像上传问题?

Posted

技术标签:

【中文标题】在共享主机上托管时如何解决 laravel 的图像上传问题?【英文标题】:how do i solve the image upload issue of laravel while hosting it on shared hosting? 【发布时间】:2020-04-02 03:36:22 【问题描述】:

我正在使用托管程序来部署我的 laravel 项目我将所有文件上传到 public_html 文件夹中,然后进行了应用程序工作所需的所有必要更改。该应用程序似乎工作得很好但是当用户尝试上传图像,图像存储在 storage/app/public/avatar 文件夹和 public/storage/avatar 文件夹中,因为我使用符号链接链接这两个文件夹,但用户无法查看照片。这就是我回忆照片的方式

div class="profile-avatar" style="width: 400px;height:500px;border-radius: 0%;background-image: url('@if(Auth::user()->avatar == "avatar.png") url("/imgs/".Auth::user()->avatar) @else url("/storage/avatar/".Auth::user()->头像) @endif');"

请帮我解决这个问题

【问题讨论】:

【参考方案1】:

由于您没有 ssh 访问权限以在 shell 中运行某些命令, 上传图片时试试这个

1.在此处存储图像: public_path() 。 'img/filename.jpg'*

2.将“img/filename.jpg”保存在数据库中

3.使用 url('img/filename.jpg')

生成图片 URL

// 输出http://www.your-domain.com/img/filename.jpg

如果您可以管理 shell 访问,那么试试这个:

删除您当前在 storage 文件夹中创建的 app/public/avatar 目录。 还要删除 public 内的存储文件夹!

之后通过 ssh cli,cd 到你的 laravel 项目文件夹并通过以下命令创建一个符号链接

ln -sr storage public/storage

希望它能解决您的问题。我遇到了同样的问题,我的问题通过第二种方法得到了修复(我可以通过 ssh 访问我的服务器)。

【讨论】:

我实际上没有使用任何类型的外壳 检查您的 filesystem.php 确保您使用 public_path() 作为您用于上传照片的驱动程序。等等我正在编辑我的答案 我可以访问 ssh。现在从一开始请告诉我我在哪里上传我的所有文件到主机上,因为我删除了所有文件以便从 0 开始 在上面的问题中,我提供了我的 laravel 文件的外观,在另一张图片中,我展示了我的主机文件管理器的外观。请帮助我知道在哪里上传所有文件,即在 public_html 文件或根文件中,以便使用 ssh cli 执行存储链接命令 通过 ssh 进入你的 laravel 项目文件夹并执行我给出的上述命令。我假设你已经用你的 laravel_project/public 文件夹和你的 public_html 创建了一个符号链接。

以上是关于在共享主机上托管时如何解决 laravel 的图像上传问题?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 7 中更新图像 Summernote?

Laravel 5 – 清除共享主机服务器中的缓存

Laravel 5 – 清除共享主机服务器中的缓存

共享主机中的 Laravel 存储链接

如何使用节点 api 将图像存储在共享主机提供商上

共享主机 Laravel 8 主机问题:Symlink 不工作