2012-03-21 84 views
0

我想弄清楚如何在PHP中將圖像類型設置爲變量。我需要從數據庫中提取圖像,找到它的圖像類型並顯示它。目前它只顯示JPG格式。獲取圖像類型,PHP

,用來上傳的代碼是:

if(isset($_FILES['image']) && $_FILES['image']['tmp_name'] != '') { 
    $tempext = explode('.', $_FILES['image']['name']); 
    $tempext = strtolower($tempext[count($tempext) - 1]); 
    switch($tempext) { 
     case 'jpg': 
     case 'jpeg': 
      $ext = '.jpg'; 
      break; 
     case 'gif': 
      $ext = '.gif'; 
      break; 
     case 'png': 
      $ext = '.png'; 
      break; 
     default: 
      $ext = false; 
    } 
    if($ext != false && move_uploaded_file($_FILES['image']['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . $ext)) { 
     $imagesuccess = chmod($_SERVER['DOCUMENT_ROOT'] . '/img/profiles/' . $id . $ext, 0644) ? 'yes' : 'no'; 
    } else { 
     $imagesuccess = 'no'; 
    } 
} 

編輯:

我做了一點點的進步,主要是清理一些愚蠢的錯誤,但我仍然沒有得到任何圖像出現。

下面是更新開關情況:

switch ($ext) { 
      case 'jpg': 
      case 'jpeg': 
       $ext = '.jpg'; 
       break; 
      case 'gif': 
       $ext = '.gif'; 
       break; 
      case 'png': 
       $ext = '.png'; 
     } 

和圖像位置:

if(!file_exists($_SERVER['DOCUMENT_ROOT'] . $imgurl . 'profiles/' . $r['id'] . $ext)) { 
        echo '<img src="' . $imgurl . 'profiles/unavailable.gif" id="profile-big-img" />' . PHP_EOL; 
       } else { 
        echo '<p><img class="profileimg" src="' . $imgurl . 'profiles/' . $r['id'] . $ext . 'id="profile-big-img" alt="' . $r['forename'] . ' ' . $r['surname'] . (($r['course'] == 'graphics') ? ' Graphic Design' : ' Illustration') . '" /></p>' . PHP_EOL; 
       } 
+0

你有機會看看最終的HTML嗎? – 2012-03-21 15:32:14

+0

$ tempext來自show time? – 2012-03-21 15:32:44

+0

我建議立即關閉這類問題,以避免產生HTML。任何理智的社區都會接受它。當然不是這個。 – 2012-03-21 15:34:08

回答

4

最可靠的方法是使用FileInfo

+0

他不需要任何文件類型檢測,我害怕,但他的代碼只是一點常識(就像在這個神神聖的網站上的任何其他問題)。 – 2012-03-21 15:38:00

0

您可以使用pathinfo函數進行檢查。我很確定它應該工作。

1

它很難跟蹤問題,當代碼位CREAMY;)

讓檢查什麼是你的形象問題首先從命令行:

一)打開終端 B)的CD一起dirctory圖像(可能是網頁的目錄) C)運行此上(複印件+過去+回車)

php -r ' $dh= opendir(".");while(($file=readdir($dh))!==false){ if(!is_dir($file)){ $tp=exif_imagetype($file);echo "$file: =====> $tp\n"; } } ' 

輸出將是某事像這樣:

... 
error.JPG: =====> 2 
features.JPG: =====> 2 
kunfu_panda.jpg: =====> 2 
..... 

將代碼與php提供的Imagetype常量進行比較。

這將是邁向解決方案的第一步。

+0

好的,目前有2個圖片類型:'IMG_JPG'和'IMG_GIF'。目前還沒有人上傳「IMG_PNG」或「IMG_JPEG」,但我認爲它將在未來某個時候發生。 – Ryan 2012-03-21 16:38:39

+0

對不起,Imagetype常量是'IMAGETYPE_GIF'和'IMAGETYPE_JPG',而不是'IMG_' – Ryan 2012-03-21 16:45:02