質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

4回答

1474閲覧

Laravelでの画像の保存方法

tarofess

総合スコア127

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

1クリップ

投稿2018/02/07 12:22

Laravelで画像をアップロードしようとしているのですが、どういうやり方が一般的なのでしょうか?
Laravelには簡単に画像をサーバーにアップロードする機能が備わっていたりするでしょうか?
そもそも僕はWebは初心者で、一般的なWebでの画像の保存方法が分かりません。
DBには画像のパスを保存し、別途サーバーに画像を置いておくのでしょうか?
それともDBにそのままバイナリデータを書き込むのでしょうか?
どなたか画像の保存についてアドバイスをいただきたいです。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

Laravel(5.5)には、Flysystemという多種のストレージシステムに対応できるライブラリをラッピングしたものが組み込まれているので、これを使うのが一般的です。
Laravel 5.5 ファイルストレージ
Flysystem
画像は、基本的には「DBには画像のパスを保存し、別途サーバーに画像を置いておく」という認識が取り回しが効くので良いかと思います。
LaravelでEloquentと組み合わせて画像などのリソースを管理できる、以下のライブラリも使いやすいです。
spatie/laravel-medialibrary

投稿2018/02/08 08:15

aro10

総合スコア4106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tarofess

2018/02/08 12:23

ご回答ありがとうございます。 Flysystemというものがあるのですね。具体的に挙げてくださりありがとうございます。 やはり「DBには画像のパスを保存し、別途サーバーに画像を置いておく」というのが良さそうですね。 教えていただいたライブラリ等を含めて開発の参考にさせていただきます。ありがとうございます。
guest

0

DBには画像のパスを保存し、別途サーバーに画像を置いておくのでしょうか?
それともDBにそのままバイナリデータを書き込むのでしょうか?

あなたがどうしたいかによりますが、一般的にリソース的な負荷を抱えない為にも、画像自体は別サーバーにあげて、laravel側でパスを取得するロジックを組んだり、とかいうやり方が多いように思います。

投稿2018/02/07 16:38

編集2018/02/07 16:39
earnest_gay

総合スコア615

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tarofess

2018/02/08 12:16

ご回答ありがとうございます。 別サーバーに画像を保存して、パスを通じてアクセスするやり方が多いのですね。 参考にさせていただきます。ありがとうございます。
guest

0

回答ではないです^^;
画像保存方法に関しての質問を紹介します。
データベースに画像を保存するのはありでしょうか?
保存場所に関して、参考になるかと。

投稿2018/02/08 12:29

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2018/02/09 00:19

過去に似たような質問に対して同じような回答をした記憶があったのですが、この質問でした(半年以上前だから簡単に見つからないわけだ・・・) 回答としても良いと思いますよ。色んな意見があって私は大変参考になります。
退会済みユーザー

退会済みユーザー

2018/02/09 00:39

私は、この質問の前半を質問主旨として捉えたので回答じゃないと前置きしました。BA 決まったみたいなので、質問の後半に対して補完するつもりで記述しましたが、まぁ誰かの役に立てば嬉しいですw
tarofess

2018/02/09 12:11

リンク先の質問と回答を見たのですが、すごく参考になりました。 データベースに画像は保存しないほうがいいという意見が圧倒的に多いですね。 パフォーマンスが悪くなっていくというのは頷けました。 ありがとうございます。
退会済みユーザー

退会済みユーザー

2018/02/09 12:28

新規のシステムならオブジェクトストレージを前提に作ると、きれいな構成が作れるっぽいです。
tarofess

2018/02/09 12:37

オブジェクトストレージを使ってみようと思っているので、試してみますね。
guest

0

>どういうやり方が一般的なのでしょうか?
>一般的なWebでの画像の保存方法が分かりません。
パッと思いつくのは
・バイナリデータでDBに保存
・ファイルパスをDBに保存
・画像名をDBに保存
・拡張子のみDBに保存(置き場所など命名規則を含めて決まっていて様々な画像拡張子を許可する場合)
・何もDBに保存しない(置き場所など命名規則を含めて決まっていて特定の拡張子のみ許可する場合)

※一番最初のDBに直接保存以外はいずれにしても画面表示時にfile_exists()などでファイルの実体確認は必須

ですが、どれが正しい、一般的ということはありません。
ということで「仕様」や「環境」により というのが回答です。

個人的にルールをしっかり決めるのが好きなので「拡張子のみDBに保存」「何もDBに保存しない」をよく採用しますが、案件により指示や要件があればそれに従います。
いずれも対応経験があるので、本当にどれがってことはないです。

>Laravelには簡単に画像をサーバーにアップロードする機能が備わっていたりするでしょうか?

「Laravel ファイルアップロード」で検索すれば沢山記事が出てきます。
taratailでも質問が結構出ていておおよそ解決されているので、参考にしてみてください。

投稿2018/02/08 01:22

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tarofess

2018/02/08 12:20

ご回答ありがとうございます。 「拡張子のみDBに保存」と「何もDBに保存しない」というのは初めて聞きました。色々なやり方があるのですね。 「Laravel ファイルアップロード」で検索しても色々記事が出てくるので参考にしてみます。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問