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

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

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

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

Q&A

1回答

645閲覧

php mysql DBに保存してある画像を取り出し表示させたい

taka211

総合スコア17

PHP

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

0グッド

1クリップ

投稿2021/04/12 08:46

前提・実現したいこと

DBに保存してある画像を取り出し表示させたいです。

保存してあるデータは別フォームにて$_FILE['tmp_name']をエンコードしたものです。

post送信されたものをファイルの居場所も分からずそのまま保存できてしまったため、パスが作られ保存され、DBに保存したそのパスで再度呼び出せると思っていたのですが、根本的に間違っているのでしょうか。

以下がソースコードです。

発生している問題・エラーメッセージ

fopen(C:ファイル) failed to open stream: No such file or directory

該当のソースコード

php

1$sql = "SELECT * FROM contents"; 2$sth = connect()->query($sql); 3$contents = $sth->fetchAll(PDO::FETCH_ASSOC); 4//contentsテーブルのimg1カラムにはファイルデータ(path)が格納 5//例えばkry1のimg1を取り出す 6$img1 = $contents['1']['img1']; 7$img = base64_decode($img1); 8$filedata = file_get($img); 9 10 11//html 12<?php echo $filedata ?> 13

php

1file_get.php 2function file_get($file) 3{ 4 $fp = fopen($file, "rb"); 5 $img = fread($fp, filesize($file)); 6 fclose($fp); 7 8 $enc_img = base64_encode($img); 9 $imginfo = getimagesize('data:application/octet-stream;base64,' . $enc_img); 10 $img_data = '<img src="data:' . $imginfo['mime'] . ';base64,' . $enc_img . '">'; 11 if ($img_data) { 12 return $img_data; 13 } 14 return false; 15}

試したこと

別にimgフォルダを作りそこに保存、呼び出しの方法を検討した。

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

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

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

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

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

guest

回答1

0

$_FILE['tmp_name']をエンコードしたもの

$_FILE['tmp_name']自体をエンコードする意味はありません
その中身をエンコードせずにprepareでdbに流し込んでみてください

投稿2021/04/12 08:56

yambejp

総合スコア116724

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

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

taka211

2021/04/12 10:37

ご回答ありがとうございます。 ちなみに、img1のデータ型をmediumblobにしてバイナリデータを保存だと思っていたのですが、今回のケースであればVachar型にしてエンコード不要、ということでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問