私が表示する画像を処理するphpファイルでは、.jpg、.png、.bmpなどの1つの画像形式しか使用できませんが、すべてではありません。 imageNameは、データベースに保存されている画像のファイル名とその形式を格納します。これは私のコードですが、これまでのところまだ機能しておらず、それが許可されているかどうかはわかりません。修正を手伝ってもらえますか?
$con = mysqli_connect("localhost","root","","tickets");
$ticket = 109;
$result = mysqli_query($con,"SELECT image, imageName FROM tix WHERE tktNum=$ticket");
while($row = mysqli_fetch_array($result))
{
$image = $row['image'];
$imageName = $row['imageName'];
$format = substr( $imageName, -3 ); //gets the last 3 chars of the file name, ex: "photo1.png" gets the ".png" part
header('content-type: image/' . $format);
}
解決策は、ファイルを読み込んで、それがどの種類の画像であるかを判断し、それに基づいて適切なヘッダーを送信することです。
$filename = basename($file);
$file_extension = strtolower(substr(strrchr($filename,"."),1));
switch( $file_extension ) {
case "gif": $ctype="image/gif"; break;
case "png": $ctype="image/png"; break;
case "jpeg":
case "jpg": $ctype="image/jpeg"; break;
case "svg": $ctype="image/svg+xml"; break;
default:
}
header('Content-type: ' . $ctype);
私はこれを使用しました。画像であることを示していますが、画像の種類は指定していません。
header("Content-type: image");
ファイルの種類に関係なく、問題なく動作しているようです。 IE、Firefox、Safari、およびAndroidブラウザでテストしました。