すべての画像を画像フォルダーに保存してから、画像のパスをデータベースに保存します。たとえば、投稿を行っていて、各投稿に画像がある場合、画像をデータベースにアップロードし/webroot/images/
てパスを保存でき/webroot/images/someimage.jpg
ます.
Web サイトに大量の画像が含まれる場合は、さらに整理した方がよいでしょう。1 つのフォルダーに何千ものファイルがあるのは良くありません。特に、何か ftp で接続しようとする場合は、もう 1 つ追加できます。投稿IDを持つフォルダー(私が言及した例では)なので、たとえば次のようになり/webroot/images/[id]/image1.jpg
ます。
接頭辞が常に同じである/webroot/images
場合、アプリがイメージ フォルダの場所を認識していれば、ディスク領域を節約するためにデータベースで無視できますid
。
<img src='<?= IMAGES_FOLDER."/".$post->getId()."/".$post->getImageName() ?>' />
getImage()
もちろん、それを行う関数を投稿に追加するといいでしょう。例を確認してください。
public function getImage()
{
return IMAGES_FOLDER."/".$this->getId()."/".$this->getImageName();
}
タグは今img
よりきれいになるでしょう
<img src='<?= $post->getImage() ?>' />
PS : データベースに画像を保存することは非常に非効率的です。通常、データベースはアプリケーションのボトルネックであり、そこに画像を保存するとデータベースのサイズが大きくなり、Web サイト上の画像にアクセスするたびにヒット数が増えることは言うまでもありません。 php(または使用している言語)スクリプトを実行してその画像を提供するために必要な画像を開くと、サーバーのRAM使用量が増加します。
また、ユーザーが画像をアップロードしようとしていると述べたので、アップロードされたのと同じ名前で画像を保存しないようにしてください。特に長い名前やスペースなどを使用する名前では、物事がばかげて見えますmd5
。画像名、またはランダムな文字列を生成し、それを生成するとmd5
、文字列の長さが一定に保たれ、見た目がきれいになります。上書きを避けるために、画像の存在を再確認することを忘れないでください。
もちろん、私が提案したすべての名前は単なる例であり、アプリケーションに合った名前を自由に使用できます。