1

ユーザーが画像を MySQL データベースにアップロードできるフォームがあります。テーブルには 、 、 の 3 つの列がidありnameますimageImageデフォルト設定の BLOB 列です。画像データを保存することはできますが、データを取得して Web ページに表示しようとすると、画像が壊れてしまいます (この場合は jpeg ファイルです)。

どこかでエンコーディングに問題があったと思われます。私の upload.php ファイルは BOM なしの UTF-8 でエンコードされています。これは私のアップロードコードです:

$image = addslashes(file_get_contents($_FILES['image']['tmp_name']));
$image_name = addslashes($_FILES['image']['name']);

$insert = $conn->prepare('INSERT INTO images VALUES(:id,:name,:image)');
$insert->bindValue(':id', '');
$insert->bindParam(':name', $image_name);
$insert->bindParam(':image', $image);
$insert->execute();

そして、これが私が画像を表示しようとする場所です。

$select = $conn->prepare('SELECT image FROM images WHERE id = 2');
$select->execute();

$display = $select->fetch();

echo '<img src="data:image/jpg;base64,' . base64_encode( $display['image'] ) . '" />';

MySQL のブロブに関するビデオ チュートリアルを見ました。ここでは、ブロブ列にbinary属性がありました。しかし、そのような列を作成しようとすると、エラー 1064 が発生します。これと関係があるかどうかさえわかりません。

4

1 に答える 1