画像をbase64にエンコードしてデータベースに保存するまでは恐らくできたと思うのですがそれを呼び出す際の処理がよくわかりません。
base64は64種類の文字列に置き換えて画像はサイトに埋め込むという理解でよろしいでしょうか。
そう仮定して以下のことをお聞きしたいです。
①base64に置き換えた時に中身をechoするとdata:image/png;base64,udjfajdみたい文字列になっていますがこれも大丈夫でしょうか。
②base64に置き換えた文字列から画像を呼び出す際の処理は一旦別ページにheader("Content-Type: image/jpeg");で画像を出力してからecho "<img src="....">で引っ張てくる方法でしょうか。
試してみたのですがうまくいかず、単純な見落としで表示できていないかのか、重要な記述が抜けたり、間違ったりしているのかがわからない状態です。
よろしくお願いします。
【投稿.php】 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <script type="text/javascript"> function changeBase64(imageFile) { if (!imageFile.files.length) return; var file = imageFile.files[0]; var fr = new FileReader(); fr.onload = function(evt) { document.getElementById("image").src = evt.target.result; document.getElementById("imagedata").value = evt.target.result; } fr.readAsDataURL(file); } </script> </head> <body> <form method="POST" action="xxx.php"> <img id="image" src="" alt="画像"> <input type="hidden" name="imagedata" id="imagedata"> <input type="file" accept="image/jpg,image/gif,image/png" onchange="changeBase64(this)"> <input type="submit" value="確定"> </form> </body> </html>
【データベース送る.php】 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ありがとう</title> </head> <body> <h2>ありがとう</h2> <a href="index.php">戻る</a> <div class="content"> <?php $image=$_REQUEST['imagedata']; insert_proc ($image); // ------------------------------------------------------------------ // // ------------------------------------------------------------------ function insert_proc ($image) { echo ('*** insert_proc *** start ***<br />'); $dsn = 'xxxx'; $user = 'xxx'; $password = 'xxx'; echo('image='. $image. '</br>'); date_default_timezone_set('Asia/Tokyo'); $date_mod = date ("Y-m-d"); echo ('date_mod = ' . $date_mod . '<br />'); try { $pdo = new PDO($dsn,$user,$password); } catch (PDOException $e) { exit('データベースに接続できませんでした。' . $e->getMessage()); } $stmt = $pdo->query('SET NAMES utf8'); if (!$stmt) { $info = $pdo->errorInfo(); exit($info[2]); } echo "*** check *** ppp ***<p />"; $sql="insert into xxx (imagedata)" . "values ('" . $image. "')"; echo $sql . "\n"; $stmt=$pdo->prepare ($sql); $stmt->execute (); } // ------------------------------------------------------------------ ?> </div> </body> </html>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2016/10/14 05:40
退会済みユーザー
2016/10/14 05:41
2016/10/14 05:46
退会済みユーザー
2016/10/14 06:01