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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

データベース

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

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

1120閲覧

DBに保存した画像を読み込んで表示しようとすると、画像が途中で切れている

Haruto513

総合スコア52

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

データベース

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

FuelPHP

FuelPHPは、軽量高速で開発が可能なPHPのWebアプリケーションフレームワークです。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2020/10/01 08:35

業務で使うためのFuelPHPを勉強している最中です。

サンプルアプリの制作をしており、画面のimgタグの中に、DBから読み込んだ画像を表示しようとしたところ、
画像が上から少しだけ表示されたのみで、完全に表示されないデータがいくつかありました。

ビュー側のPHPではこのように書いております。

PHP

1 2foreach ($shohin_list as $value) { 3 echo 4 '<div class="col-3 w-auto">'. 5 '<div class="menu_card bc_colorPrimary">'. 6 '<div class="w-100 h-100 d-flex flex-column" id="'."menu/$value->shohin_code".'">'. 7 "<p class='menu_title bc_colorPrimaryLight'>$value->shohin_meisho</p>". 8 '<div class="w-100 flex-grow-1 bc_colorAccent text-center">'. 9 '<img src="'."image/data/$value->shohin_code".'" class="img-fluid">'. 10 '</div>'. 11 '<p class="text-right bc_colorPrimaryLight">'."$value->tanka 円</p>". 12 '</div>'. 13 '</div>'. 14 '</div>' 15 ; 16} 17 18

上記で生成されたのが以下のようなコードです。

<div class="col-3 w-auto"> <div class="menu_card bc_colorPrimary"> <div class="w-100 h-100 d-flex flex-column" id="menu/000008"> <p class='menu_title bc_colorPrimaryLight'>米麺のサラダパスタ</p> <div class="w-100 flex-grow-1 bc_colorAccent text-center"> <img src="image/data/000008" class="img-fluid"> </div> <p class="text-right bc_colorPrimaryLight">1400 円</p> </div> </div> </div>

そしてimgのsrcは以下のようなコードとなっております。

PHP

1 2class Controller_Image extends Controller 3{ 4 5 public function action_data() 6 { 7 $params = $this->request->route->method_params; 8 $data = DB::select('gazo_data')->from('m_shohin')->where('shohin_code',$params[0])->as_assoc()->execute(); 9 $gazo = $data[0]['gazo_data']; 10 header('Content-type:image/png'); 11 echo base64_decode($gazo); 12 } 13} 14

そして、不完全な形で表示されている画面がこちらです。

イメージ説明

(黄色の部分は画像が入るdivボックスの背景色です。)

完全な形で表示されるデータはあるにはあるのですが、少ないです。
DBから読み込む過程で何かが起きているのか、それとも、そもそもDBに入っているbase64文字列が不完全なのか分かりません。
どのようにして原因を調べればよいでしょうか。
アドバイスを頂けると助かります。
よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

DB上の画像を保存するフィールド(項目)のサイズは十分にありますか?
BASE64の文字列が途中までしか保存されず
BASE64展開時(画像ファイルに戻すとき)データが足りない場合そのような症状となります。

投稿2020/10/01 08:44

kuma_kuma_

総合スコア2506

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

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

Haruto513

2020/10/01 08:57

回答ありがとうございました! 画像データを保存する項目のデータ型をBLOBからLONG BLOBにしたところ、ちゃんと保存されたみたいで、今度はきちんと全部表示されました。 とても早く解決できてよかったです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問