画像データを
$raw_data = file_get_contents($_FILES['upfile']['tmp_name']);
で取得し、
echo ("<img src='data:image/{$row["extension"]};base64,{$row["raw_data"]}' ");
とインラインイメージで表示する方法はできたのですが、
下のコードのように、パスを指定しimport_media.phpで画像を表示するやり方がうまくいきません。
画像ファイルが壊れているような感じになります(画像が割れたような画像表示)
やったこと。
BOM無しかどうか確かめた。
すべてのデータをutf8に統一。
いろんなサイトを見ましたがやり方はほぼほぼ同じでした。
何故画像が表示できないのか知りたいのでよろしくおねがいします。
main.php
php
1//$target = $row["fname"] $fname = $_FILES["upfile"]["tmp_name"]; 2echo ("<img src='import_media.php?target=$target'>");
import_media.php
php
1<?php 2 3/* 4 * To change this license header, choose License Headers in Project Properties. 5 * To change this template file, choose Tools | Templates 6 * and open the template in the editor. 7 */ 8 9//セッション開始 10session_start(); 11//データベース処理読み込み 12require_once("logindb.php"); 13//インスタンス化 14$pdo = db_connect(); 15 16if(isset($_GET["target"]) && $_GET["target"] !== ""){ 17 $target = $_GET["target"]; 18 var_dump($target); 19} 20else{ 21 header("Location: Main.php"); 22} 23$MIMETypes = array( 24 'png' => 'image/png', 25 'jpeg' => 'image/jpeg', 26 'gif' => 'image/gif', 27 'mp4' => 'video/mp4' 28); 29try { 30 31 $sql = "SELECT * FROM board WHERE fname like :fname"; 32 $stmh = $pdo->prepare($sql); 33 $stmh->bindValue(':fname', $_GET["target"], PDO::PARAM_STR); 34 $stmh->execute(); 35 $row = $stmh->fetch(PDO::FETCH_ASSOC); 36 header("Content-Type: ".$MIMETypes[$row["extension"]]); 37 echo ($row["raw_data"]); 38} 39catch (PDOException $e) { 40 echo("<p>500 Inertnal Server Error</p>"); 41 exit($e->getMessage()); 42} 43 44?> 45
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。