はじめまして。
今、(1)ファイル参照から画像ファイルを選択してDB(MySQL:phpMyAdmin2.10.1)にある
フィールド(gazou)へBLOBのバイナリで保存し、
(2)違うぺージでDBに保存してある画像を、検索して表示させたいのですが、
以下のようになってしまい、表示できません。
http://shokuhidiet.web9.jp/a/3.bmp
ソースを載せておきます。どうかよろしくお願いいたします。
http://shokuhidiet.web9.jp/a/sos.txt
No.3ベストアンサー
- 回答日時:
> echo "<img src=\"data:image/gif;base64,${gif_enc}\" />";
現在の主なブラウザは、html内に画像のバイナリー情報を埋め込んでも(たとえbase64encodeしても)表示出来ません。
srcは、ファイル名を指定する属性なので、アドレスが入っていれば、サーバーからそんなファイルは無いという情報が返って、表示不可用の画像になるけど、data:スキームだと、どこかに探しに行ってそのまま返ってこないのでしょう。
一枚の画像のみを出力するphpスクリプトを別に作って、img src="" では、そのphpスクリプトを呼び出すようにするのが一般的だと思います。
No.4
- 回答日時:
実験していないので分かりませんが、
queryだと、バイナリデータ中にたまたま引用符の文字コードや、\の文字コードに一致するデータがあった場合、動作が怪しくなる様に思います。
base64エンコードして登録、取りだす時にbase64デコードとかしたら、
どうでしょうか。
もしくは、PEAR::DBとかPEAR::MDB2とかの追加ライブラリで
prepareがあるものを利用したらどうでしょうか?
でも、この問題の答えはANo.3の言っている通りなのかな、と思います。
No.2
- 回答日時:
とりあえずソースだけ拝見しましたが
mysql_connectの引数くらいは隠した方が良いです^^;;
ダミーだったとしても少しアレです。危機管理意識を持ちましょう。
本題ですが、
画像が途中で切れる、色情報が崩れるというのは何かの処理でバイナリにゴミが入っていることが原因であることが多いです。
または通信のタイムアウト、パケロスなどによる情報不足でもそうなります。
システム開発全般に言えることですが、出力したいデータが意図しないものであった場合はI/Oの手順を一つ一つ丁寧に確認することが肝要です。
この場合ですと
1.mysqlに入れ込む
2.mysql->phpで取得
3.php->クライアント
をそれぞれ確認するのが肝です。(本当はもっと細かいところまで精査すべきですが)
1.
mysqlに入っているバイナリが入れたいバイナリと完全に同一であるか確認しましょう。
mysqlであればBLOGの最大長を超えたバイナリは破棄される仕様だったと記憶しています。
http://dev.mysql.com/doc/refman/4.1/ja/blob.html
PHPの転送量制限なども合わせて確認し、入っているバイナリが本当に正しいかチェックしましょう。
2.
php内でunpack()などを使いバイナリを視覚的に読めるものへ変換し壊れた部分をチェックしましょう。
もしかしたら変な文字が入っているかもしれません。(ソースをさらっと見た限りではなさそうですが)
3.
各種サーバの転送量制限に引っかかってたりしないか確認しましょう。
送信するパケット単位が大きいと途中でタイムアウトすることもあります。。
といっても昨今の環境ではお目にかかることは無いでしょうが。^^;
当方的には1.が一番怪しいのではないかなぁと。
// dataスキームってieでは見られなかったと記憶してますが大丈夫でしょうか
ご指摘ありがとうございます。
全然気がまわっていませんでした><;
以後気をつけます^^
ご丁寧なアドバイスありがとうございます!!
ちょっと調べて、また報告させていただきます♪
バージョンはIE6なんですが、、、関係してるんでしょうか。。。
IE6でも見れる方法とかあるといいのですが><;
No.1
- 回答日時:
外部にソースを置かれると誰も見てくれないと思われます。
// 安全なURLであるという保障が無いため
// 当方は面倒なだけですが
不明点を明確にし質問すると良いでしょう。
ご指摘ありがとうございます。
画像が、□に×がついて表示されないってのは私も見たことあるんですが、
×にもならず、表示されるかされないかの微妙なところでとまってしまって、結局表示されないのです・・・。
$gazou = $row["gazou"];
$gif_enc = base64_encode($gazou);
echo "<img src=\"data:image/gif;base64,${gif_enc}\" />";
で表示しようとしたら、そうなってしまいました・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHP 画像のアップロード Qiita 2 2022/11/28 04:44
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- ホームページ作成・プログラミング 保存したホームページのファイルは何をしている推測できますでしょうか。 1 2023/08/18 15:50
- Excel(エクセル) iphonからone driveに保存してあるExcelを閲覧すると表示の仕方がちがうデータ 2 2022/12/21 13:51
- iOS iPhone用動画保存アプリiCapのデータは外付けUSBメモリに保存できますか? 1 2022/10/18 17:48
- 防犯カメラ・監視カメラ・小型カメラ VHSを高画質な動画ファイルにしたいです。 3 2022/05/06 12:08
- その他(プログラミング・Web制作) ホームページビルダー16で画像を保存したら画像がトップページ上に沢山出てきてしまいます 1 2022/12/06 14:50
- 画像編集・動画編集・音楽編集 VSコードで画像を入力したのですが、Edgeにした時、画像が表示されません。 画像はファイルに保存し 1 2022/07/17 18:51
- その他(IT・Webサービス) MacとWindows Google検索した時のURL表示の違いについて 1 2022/11/17 10:38
- アプリ Edgeを操作するアプリについて 4 2023/05/11 22:48
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
リダイレクト元のURLの取得方法...
-
phpにcssを適応させたい...
-
phpでmysqlから画像パスを出力する
-
PHPで五角形、または多角形のグ...
-
XMLのロードに失敗する
-
PHPのif文でその処理を途中で抜...
-
【file_exists】ファイルが存在...
-
onedrive にexcelファイルをア...
-
拡張子php画像をjpg画像等に変...
-
youtubeに音声のみのmp4ファイ...
-
PHPのMySQLモジュールのインス...
-
pixivのイラスト投稿の仕方を教...
-
javascriptからphpへ変数
-
PHPで作るフレーム、どんな風に...
-
PHPで外部プログラムのバックグ...
-
FTPでのファイルとディレクトリ...
-
ファイルアップロードの上限を...
-
フレームワークの選定について
-
ヒアドキュメントの中で別ファ...
-
PHP8を使うと、大量のWarningが...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
CSV出力にHTMLが入ってしまう
-
TCPDFについて
-
リダイレクト元のURLの取得方法...
-
PHPでダブルバッファリング(画...
-
ob_end_clean と ob_clean の違...
-
phpにcssを適応させたい...
-
PHPSpreadsheetによる書き出し...
-
PHPで`headers already sent`と...
-
PHPで取得したHTML内のdiv要素...
-
image関数でMS Pゴシックを使い...
-
PHP/phpMyAdmin/データベースな...
-
mPDFでのPDF出力がうまくいかな...
-
画像をDBに保存し、表示させ...
-
エクスプローラーでフォルダを...
-
json_encode日本語表示/PHP5.2.5
-
webroot以外の画像の表示
-
¥マークを出力したいがバック...
-
phpで数字の値を画像で表示した...
-
phpexcelにてsubmitボタンを押...
-
PHP header関数が使えない
おすすめ情報