###前提・実現したいこと
スタッフのマニュアル用にアプリを制作しており、テキスト関係の表示や編集機能はほぼできたのですが、画像を取り込んでよりわかりやすいマニュアルにしたいと思っています。
画像のデータベースへの保存はできたのですが、出力ができません。
###発生している問題・エラーメッセージ
画像を出力しようとすると、文字化けした文字列が出てきます。
###該当のソースコード
PHP
<!DOCTYPE html>
<html lang="ja">
<?php
if (isset($_GET['name'])) {
$name = $_GET['name'];
}
function getPDO() {
// PHP Data Object を返す
$dataSourceName='●●●;dbname=●●●;charset=utf8';
$user='●●●';
$dbPassword='●●●';
return new PDO($dataSourceName, $user, $dbPassword);
}
// 拡張子によってMIMEタイプを切り替えるための配列
$MIMETypes = array(
'png' => 'image/png',
'jpg' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'gif' => 'image/gif',
'bmp' => 'image/bmp',
);
try {
$pdo = getPDO();
$tableName = "ImageData";
// データベースから条件に一致する行を取り出す
$data = $pdo->query('SELECT * FROM ImageData WHERE name = "' . $name . '"')->fetch(PDO::FETCH_ASSOC);
// 画像として扱うための設定
header('Content-type: ' . $MIMETypes[$data['extension']]);
echo $data['image'];
} catch (Exception $e) {
echo "load failed: " . $e;
}
?>
</html>
###試したこと
ImageDataというテーブルには、数十キロバイトのimageがmediumblobで保存されています。
URL末尾に「?name=logo1」というようにすると、logo1は正しくGETされます。
$DATA('name'), $DATA('extension')ともにechoで正しく表示されました。
###補足情報(言語/FW/ツール等のバージョンなど)
プログラムはutf-8、BOMにチェックなし、改行コード変換なしで保存しています。
画像はjpgで試しています。
EXCEL VBAはかなり経験しましたが、PHPはまだ一か月ほどしか経験していません。なにが原因でうまく表示されないのでしょうか。なにとぞ、ご教示のほどよろしくお願いいたします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/12/18 00:59