在不知道其扩展名的情况下获取文件的目录

时间:2013-11-24 22:21:53

标签: php html

我希望能够呈现用户的照片。该用户可以是Doctor,Nurse或Patient类型,并且属于这些类型中的每一个的每个人具有识别他的不同ID。我将每种类型用户的照片分成目录/ images / user_upload /中的三个文件夹,并且给定用户可能有也可能没有照片。如果他有照片,我想要提供一个与他的ID相同的照片(注意我不知道这个文件的扩展名,只知道名字)。如果他不这样做,我想呈现默认图像。为此,我有一个名为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中得到一个空数组,即使图像存在。我做错了什么?

1 个答案:

答案 0 :(得分:0)

这种方式使用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所说,你现在指的是文件系统root /是绝对路径而不是相对于你的文档根目录。