
BLOBでの画像表示について質問させてください。
元々ヘテムルのサーバーを利用していたのをここ最近さくらのVPSに移行しました。
するとヘテムルではBlob型の画像表示が正常に表示されていたものがサクラのVPSにて画像表示がされなくなってしまいました。
mysqlのバージョンやphpinfoの設定などを限りなくヘテムルに近づけたのですが正常に表示されないため詰まってしまいました。
各ブラウザで、以下のような状況です。
IE:表示されない
Chrome:表示されない
Firefox:画像ファイル"http://~/image.php?id=544"は壊れているため、表示できませんでした。
以下質問用にソースを書き換えたものですが、ご教授頂ければと思います。
質問用ソースで動作させて同じ様に画像が出ないことは確認しています。
質問用ソースの構造は以下の通りです。
form.html
↓ファイルをPOST
upload.php
↓データをINSERT
MySQLのthumbnailテーブル
↓データをSELECT
image.php
■form.html■
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sample</title>
</head>
<body>
<form action="upload.php" method="post" enctype="multipart/form-data">
ファイル:<br />
<input type="file" name="upfile" size="30" /><br />
<br />
<input type="submit" value="アップロード" />
</form>
</body>
</html>
■upload.php■
<?php
include_once(dirname(__FILE__) . "/admin/common/functions.php");
include_once(dirname(__FILE__) . "/admin/common/db_functions.php");
// MySQL に接続し、データベースを選択します。
dbConnect();
global $_G_DbConnection;
$message = "ファイルが選択されていません。";
//サムネイル1
if (is_uploaded_file($_FILES["upfile"]["tmp_name"]) && !empty($_FILES["upfile"]["name"])){
$contents = file_get_contents($_FILES["upfile"]["tmp_name"]);
$contents = base64_encode($contents);
$contents = mysql_real_escape_string($contents,$_G_DbConnection);
$post_thumbnail1 = $contents;
$post_thumbnail1_name = $_FILES["upfile"]["name"];
}
mysql_query("SET AUTOCOMMIT=0");
mysql_query("BEGIN");
// サムネイル1
$post_thumbnail1_id = null;
if (!empty($post_thumbnail1_name)) {
$sql = "INSERT INTO `thumbnail` (";
$sql .= "`filename`,`thumbnail`)";
$sql .= " values('$post_thumbnail1_name', '{$post_thumbnail1}')";
if (!(mysql_query($sql))) {
mysql_query("ROLLBACK");
$message = "ファイルをアップロードできません。";
} else {
$post_thumbnail1_id = mysql_insert_id();
mysql_query("COMMIT");
$message = $post_thumbnail1_name . "をアップロードしました。";
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>sample</title>
</head>
<body>
<p><?=$message; ?></p>
<img src="image.php?id=<?=$post_thumbnail1_id; ?>">
</body>
</html>
■image.php■
<?php
include_once(dirname(__FILE__) . "/admin/common/functions.php");
include_once(dirname(__FILE__) . "/admin/common/db_functions.php");
// MySQL に接続し、データベースを選択します。
dbConnect();
global $_G_DbConnection;
//ID
$get_id = null;
if (isset($_GET['id'])){
$get_id = $_GET['id'];
// MySQL 問い合わせテスト
$sql = "select * from `thumbnail`";
$con = " where id = " . $get_id;
if (!($rs = mysql_query($sql . $con))) {
echo "MySQL 問い合わせエラー";
echo $sql . $con;
die;
}
while ($row = mysql_fetch_array($rs)) {
// 出力
$ext = substr($row['filename'], strrpos($row['filename'], '.') + 1);
if (is_null(get_content_type($ext))) {
echo "ファイル取得エラー";
} else {
header('Content-type: ' .get_content_type($ext));
echo base64_decode($row['thumbnail']);
}
}
dbFreeResult($rs);
}
?>
■thumbnailテーブル■phpMyadminよりエクスポート
CREATE TABLE IF NOT EXISTS `thumbnail` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`filename` varchar(255) DEFAULT NULL,
`thumbnail` longblob NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=545 ;
□中身のデータ□
INSERT INTO `thumbnail` (`id`, `filename`, `thumbnail`) VALUES
(544, 'SH3D0054.jpg', 0x2f~2f5a); ←[BLOB - 17.3 KiB]
INSERT INTO `thumbnail` (`id`, `filename`, `thumbnail`) VALUES
(543, 'ねむネコ.bmp', 0x51~413d); ← [BLOB - 234.9 KiB]
長くなってしまいましたが、ご教授お願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBAについて
-
phpでmysqlを使ってデータベー...
-
チェックボックスによる複数の...
-
チェックボックスから検索、PHP...
-
DBで検索結果に該当するデータ...
-
PHP、SQLite3のデーターでログ...
-
checkboxクリック時、SQLを実行...
-
PHPで[]の使い方について
-
WHILEで取り出しループ中にさら...
-
MySQLでデータベースにデータin...
-
<VB.NET>INSERT文でDBにデータ...
-
テキストボックスに入れた内容...
-
in 'where clause'のエラーの理由
-
エラー3011
-
VBAをつかってクエリの情報を抽...
-
実行時エラー3131 FROM 句の構...
-
検索表示について
-
phpのエラーについてです
-
ADOを使いDBへ読み書きしたい
-
PDO_MYSQLを利用したDB接続がで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
dbに登録したデータをphpのプル...
-
DBで検索結果に該当するデータ...
-
アラートでyes noを作りたいです。
-
PHPの画像表示関連(?)プログラ...
-
データの取得方法
-
配列で指定した値のみをMySQLか...
-
警告を出さないコードの書き方
-
PHPで[]の使い方について
-
ループ文で呼び出したデータの...
-
DBからSelectしたレコードのデ...
-
mySQLで結果が無いときの処理
-
データベースのページング出力...
-
PHP セレクトメニューの呼び出...
-
PHP 10件表示 "前へ" "次へ"
-
mySQLからデータを取り出す
-
データベースサーバーにあるデ...
-
PHPのプルダウンメニューにDBの...
-
mysql>PHPにデータ表示、10件ご...
-
テーブル<TR></TR>の処理について
-
php テーブルが作成できない
おすすめ情報