0

シンプルなウェブサイトを構築しています。ユーザーがアバターをアップロードして変更できるようにしたいと思います。現在、次のコードでblobとして保存されているmysqlデータベースに画像をアップロードすることができました。

//connected to DB, userID fetched

$image = $FILES['fileToUpload']['tmp_name'];
$fp = fopen($image, 'r');
$content = fread($fp, filesize($image));
$content = addslashes($content);
fclose($fp);

$sql = "UPDATE tbUsers SET profileImage = '".$content."' WHERE userID = ".userID;
$result = mysql_query($sql) or die (mysql_error());

アップロード後にphpmyadminからファイルをダウンロードすると、ファイルは.binファイルとして保存されますが、通常どおり表示できます。これが正しいかどうかはわかりません。画像を表示するための私のコードは次のとおりです。

HTML:

<?php echo '<img src ="showPic.php?q='.$_SESSION['profile'].'"/>'; ?>

PHP:

if (!empty($_GET['profile']) && is_numeric($_GET['profile']))
{
  $con = mysql_connect("localhost", "root", "");
  $mysql_select_db("projectDB");
  $sql = "SELECT profileImage FROM tbUsers WHERE userID = ". $_GET['profile'];
  $result = mysql_query($sql) or die (mysql_error());

  header('Content-type: image/jpeg');
  $row = mysql_fetch_object($result);
  echo $row['image_data'];
}

画像を正しい方法で表示しようとしているかどうかはわかりませんが、ヘルプ(修正/代替ソリューション)をいただければ幸いです:)

4

2 に答える 2

1

あなたはこれを行うことができます :

if (!empty($_GET['profile']) && is_numeric($_GET['profile']))
{
  $con = mysql_connect("localhost", "root", "");
  $mysql_select_db("projectDB");
  $sql = "SELECT profileImage FROM tbUsers WHERE userID = ". $_GET['profile'];
  $result = mysql_query($sql) or die (mysql_error());

  $content = mysql_result($result,0,"file_content");
  $name = mysql_result($result,0,"file_name");
  $type = mysql_result($result,0,"file_type");
  $size = mysql_result($result,0,"file_size");
  header("Content-type: $type");

  echo $content

}

注:BLOBデータを保存するテーブルにこれらの列が必要です

file_name = 保存ファイル名

$_FILES['file']['name']

file_type = 保存ファイルの種類

$_FILES['file']['type']

file_size = 保存ファイル サイズ

$_FILES['file']['size']
于 2012-09-30T18:46:37.913 に答える
0

これを選択します

$sql = "SELECT profileImage FROM tbUsers WHERE userID = ". $_GET['profile'];

選択されていない列を参照

echo $row['image_data'];
于 2012-09-30T18:19:02.190 に答える