在我们的某些网站上,我们将图片保留在主http文件夹之外,因为只有登录的人才能看到这些图片。现在我有一个我很久以前写过的函数,它从http文件夹外部加载图像并且它扰乱了位置,这样你就看不到它们从哪里加载了,这适用于jpg和png。问题是我们已经开始使用svg图像,并且相同的代码根本不能与svg一起使用。所以我的问题是如何更改我的代码以使其与svg一起使用?
function show_picture($location,$file)
{
$location=$location.$file;
if ( file_exists($location) )
{
$imageData = base64_encode(file_get_contents($location));
$finfo = new finfo();
$fileinfo = $finfo->file($location, FILEINFO_MIME);
$src = 'data: '.$fileinfo.';base64,'.$imageData;
echo'<img class="picture" src="'.$src.'" alt="Part Picture" /></a>';
}
else
{
echo'<img class="picture" src="images/nopicture.jpg" alt="Part Picture Does Not Exist" /></a>';
}
}
我写了一些代码来找出finfo()从MIME返回的内容,它显示为这个text / html; charset = us-ascii当真正的MIME应该带回'image / svg + xml'时。因此,由于某些原因,MIME在svg上无法正常工作。
$image="../images/logo.svg";
$finfo = new finfo();
$fileinfo = $finfo->file($image, FILEINFO_MIME);
echo "test:".$fileinfo;
我现在知道它肯定是一个MIME问题,因为我替换了原始代码中的行
$fileinfo = $finfo->file($image, FILEINFO_MIME);
到
$fileinfo ="image/svg+xml";
现在它显示了我的svg,但这不是理想的做法,因为并非我的所有图像都是svg。除非我输入if语句。但是这会破坏使用MIME的目的。