Laravel=プロジェクトで画像をアップロードして取得しようとしています。ローカルサーバーで完全に機能しましたが、ライブサーバーでアップロードした後、機能しません。
Nginxを使用しています。
私が試してみました php artisan storage:link
しかし、それは言う
「public/storage」ディレクトリはすでに存在します
この行を使用して、保存されている画像を新しいページで開きます。
<a href="{{ url('/storage/images/'.$file->file_name) }}" title="">View</a>
表示ボタンの上にマウスを置くと、次のリンクが表示されます:my_ip/storage/images/image.png
正しいと思います。
ただし、リンクをクリックするとホームページにリダイレクトされます。
href
は正しいでしょうが、それは問題ではありません。問題は、リンクの場所にファイルが存在することです。あなたが見つけているように、それはそこにはありません。
アップロードするときは、public/storage
に実際のディレクトリをアップロードしていないことを確認してください。
ローカルサーバーで、誤ってpublic/storage
に実際のディレクトリを作成しましたか?
その場合は、laravel規則がファイルをアプリディレクトリのstorage/app/public
ディレクトリに保存することであることを知っておく必要があります。 public/storage
フォルダーを自分で作成することはありません。代わりにそこにリンクするシンボリックリンクを作成します。このようにして、storage/app/public
に入力したものも、シンボリックリンクのためにpublic/storage
に表示されます。
最初にローカルサーバーが上記の(およびドキュメントで説明されている)laravel規則に従っている)を確認し、サーバーにアップロードした後、storage:link
コマンドを再試行します。 public/storage
に実際のディレクトリはもうありませんが、リンクだけがあればうまくいくはずです。
ここで行ったことは、そのディレクトリがすでに存在しているというエラーメッセージを解釈することです。
また、Homesteadを使用している場合は this answer を確認してください。ホストコンピューターにストレージリンクを作成する代わりに、Vagrantにsshして、ここにストレージリンクを作成する必要があります。
サーバーにpublic/storageフォルダーをアップロードしてエラーが発生した場合:「public/storage」ディレクトリはすでに存在します。
ただそれを削除する
rm -R public/storage
そして、コマンドを再度実行します
php artisan storage:link