我希望能够展示用户的照片。该用户可以是Doctor、Nurse或Patient类型,并且属于这些类型中的每一个的每个人都具有识别他的不同ID。我将每种类型用户的照片分在目录/images/user_upload/内的三个文件夹中,给定的用户可能有照片,也可能没有照片。如果他有一张照片,我想给他一个和他的身份证相同的名字(注意,我不知道这个文件的扩展名,只知道名字)。如果他不这样做,我想呈现一个默认的图像。为此,我有一个名为printUserPhoto的函数。
function printUserPhoto()
{
$path = '/images/user_upload/' .ucfirst($_SESSION['listtype']). '/' .$_SESSION['id']. '.*';
$source = glob($path);
if(empty($source))
echo '<img src="images/default_profile_img.png" />';
else
echo '<img src="',$source[0],'" />';
}
尽管如此,我总是在变量$source中得到一个空数组,即使图像存在。我做错了什么?
通过这种方式使用glob
function printUserPhoto()
{
$pathToDocumentRoot = $_SERVER['DOCUMENT_ROOT'];
$path = $pathToDocumentRoot . '/images/user_upload/' .ucfirst($_SESSION['listtype']). '/' .$_SESSION['id']. '.*';
$source = glob($path);
if(empty($source)){
echo '<img src="images/default_profile_img.png" />';
} else {
echo '<img src="',$source[0],'" />';
}
}
可能会限制用户可以上传的文件类型。有了它,你可以做这样的事情:
function printUserPhoto()
{
$pathToDocumentRoot = $_SERVER['DOCUMENT_ROOT'];
$path = $pathToDocumentRoot . '/images/user_upload/' .ucfirst($_SESSION['listtype']). '/' .$_SESSION['id'];
$file = "images/default_profile_img.png";
if(file_exists($path . '.jpg')){
$file = $path . '.jpg';
}else if(file_exists($path . '.png')){
$file = $path . '.png';
}else if(file_exists($path . '.gif')){
$file = $path . '.gif';
}
echo '<img src="' . $file . '" />';
}
正如@Phil所说,您现在指的是文件系统根/是相对于文档根的绝对路径。