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

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

新規登録して質問してみよう
ただいま回答率
85.48%
データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

3973閲覧

ユーザーアイコンの画像はどうやってDBに格納されていますか?

RyomaMinagi

総合スコア32

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

1クリップ

投稿2017/09/17 07:39

現在、会員登録制のwebアプリケーションを作ってみようかと思っております。

そこで出てきた疑問なのですが、ツイッターなどで各ユーザーがプロフィール画像を登録していると思うのですが、あれはどうやって実現しているのでしょうか?

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
DBに画像を保存するのは面倒で、DB自体がものすごく重くなってしまう。
なのでファイルのパスを登録してあげるようにしたら良い。
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

という書き込みを見つけて、実際にやってみたのですが
あれは別ファイルに画像が有りきの状態で実現できるものではないのですか?
また画像を仮にユーザーからファイルを受け取って、別ファイルに保存できたとしても
パスには必ずイメージの名前も必要だと思うのですが、どうやって一致させるようにしていくのですか?

私が行ったやり方は、まず別ファイルに
[1.png][2.png]・・・
などという名前を変えたイメージを保存致しました。

その後、DBのimageカラムに
[1]、[2]・・・・・
などと表示したい画像の拡張子前の番号を入れて行きました。

最後に<img href = '[DB内の値].png'>のように呼び出していました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

「正しく指定画像が引っ張ってこれれば正解はない」が回答です。

あれは別ファイルに画像が有りきの状態で実現できるものではないのですか?

これは何が聞きたいのかよく分からないですが、
どんな対応でも必ず発生するのは「サーバーへの画像のアップロード」ですね。

法則さえ決まっていれば拡張子だけDBに保存しておくだけで対応が可能です。
拡張子も制限していればそれすら必要のないケースがありますね。
例えば、

  • ユーザは1個だけ画像をアップロードできる
  • 画像パスや画像名は固定(ユーザIDを暗号化したものなど)

拡張子を制限しない場合だと下記のような感じ
images/ユーザID/icon.拡張子
images/icon/ユーザID.拡張子

とかですね。(ユーザID暗号化はセキュリティのため例なので暗号化は必須ではありませんが)
ツイッターのプロフィールの大きい背景画像とか割とそれに近いように思います。
出力されたhtmlに拡張子がないので、プログラム側で画像を出力している可能性が高いですけどね。

もちろん画像パス全てを保存しておく方法、画像本体をDBに保存しておく方法、
いずれも不正解ということはありませんし、不適切なやり方というのはありません。
画像を本体をDBに保存する場合であってもしない場合であってもいずれにしても画像のファイルサイズ分の容量は必要なわけです。
アップロードするファイルサイズの制限とチェックは必ず入れておきたいところですね。

投稿2017/09/17 09:08

m.ts10806

総合スコア80850

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問