Laravel 上传到服务器后无法访问存储在存储文件夹中的图像
Laravel Cannot Access Image Stored in Storage Folder after Uploading in Server
我正在尝试上传和检索我的 Laravel 项目中的图像。它在我的本地服务器上运行良好,但在实时服务器上载后,它无法运行。
我正在使用 nginx。
我试过 php artisan storage:link
但它说
The "public/storage" directory already exists
我正在使用此行在新页面中打开存储的图像。
<a href="{{ url('/storage/images/'.$file->file_name) }}" title="">View</a>
如果我将鼠标放在视图按钮上,它会显示 link: my_ip/storage/images/image.png
我认为是正确的。
但是,单击 link 会重定向到主页。
href
是正确的,但这不是问题所在。问题是文件存在于 link 的位置。它不在那里,正如您所发现的那样。
上传时,请确保您上传的不是 public/storage
的真实目录。
在您的本地服务器上,您是否错误地在 public/storage
处创建了一个真实目录?
如果这样做,您需要知道 laravel 约定是将您的文件存储在应用程序目录的 storage/app/public
目录中。
您不会自己创建文件夹 public/storage
。
您创建一个 symlink 到 link 到那里。这样,由于 symlink,您放入 storage/app/public
的内容也会出现在 public/storage
.
首先检查您的本地服务器是否遵循上面概述的 laravel 约定(以及在文档中),然后,在上传到您的服务器后,再次尝试 storage:link
命令,并且,只要你在 public/storage
不再有真正的目录,只有一个 link,它应该可以工作。
请注意,我在这里所做的是解释您收到的有关该目录已存在的错误消息。
此外,如果您使用的是 Homestead,请勾选 。不要在主机上创建存储 link,您应该通过 ssh 进入 Vagrant 并在此处创建存储 link。
如果您已将 public/storage 文件夹上传到服务器并出现错误:
"public/storage" 目录已经存在。
用
删除即可
rm -R public/storage
和运行再次命令
php artisan storage:link
如果您仍然对这个问题感到困惑,这对我有用:
在我的例子中,我不得不将 .env 文件中的 APP_URL 更改为我的站点名称。它默认为 http://localhost。一旦我改变它,一切都完美无缺。
我正在尝试上传和检索我的 Laravel 项目中的图像。它在我的本地服务器上运行良好,但在实时服务器上载后,它无法运行。
我正在使用 nginx。
我试过 php artisan storage:link
但它说
The "public/storage" directory already exists
我正在使用此行在新页面中打开存储的图像。
<a href="{{ url('/storage/images/'.$file->file_name) }}" title="">View</a>
如果我将鼠标放在视图按钮上,它会显示 link: my_ip/storage/images/image.png
我认为是正确的。
但是,单击 link 会重定向到主页。
href
是正确的,但这不是问题所在。问题是文件存在于 link 的位置。它不在那里,正如您所发现的那样。
上传时,请确保您上传的不是 public/storage
的真实目录。
在您的本地服务器上,您是否错误地在 public/storage
处创建了一个真实目录?
如果这样做,您需要知道 laravel 约定是将您的文件存储在应用程序目录的 storage/app/public
目录中。
您不会自己创建文件夹 public/storage
。
您创建一个 symlink 到 link 到那里。这样,由于 symlink,您放入 storage/app/public
的内容也会出现在 public/storage
.
首先检查您的本地服务器是否遵循上面概述的 laravel 约定(以及在文档中),然后,在上传到您的服务器后,再次尝试 storage:link
命令,并且,只要你在 public/storage
不再有真正的目录,只有一个 link,它应该可以工作。
请注意,我在这里所做的是解释您收到的有关该目录已存在的错误消息。
此外,如果您使用的是 Homestead,请勾选
如果您已将 public/storage 文件夹上传到服务器并出现错误: "public/storage" 目录已经存在。
用
删除即可rm -R public/storage
和运行再次命令
php artisan storage:link
如果您仍然对这个问题感到困惑,这对我有用:
在我的例子中,我不得不将 .env 文件中的 APP_URL 更改为我的站点名称。它默认为 http://localhost。一旦我改变它,一切都完美无缺。