2016-08-01 71 views
1

我正在製作一個上傳文件的表格:文件,名稱,擴展名(在php中連接到ms sql server)。 我想添加圖標到基於擴展名的每個文件。我覺得3選項我怎麼能做到這一點:1。 最好 - 負載莫名其妙用戶默認的圖標並以某種方式將它們與我的文件 2.良好的連接 - 負載某種方式從圖標的一些網頁列表,並以某種方式將它們與我的文件 3連接。壞 - 把一些圖標,我的文件夾並從該文件顯示基於文件擴展名的文件圖標

我知道該怎麼做第三種選擇加載它,但我不能只搜索10個圖標,因爲總是會有擴展,是不是我的文件夾中(像jpeg不同於jpg)。

你能告訴我怎麼可以做一些更好的解決方案,然後3號?它可以在PHP或JS/jQuery中使用,它不會改變。

回答

0

嘗試一些事情是這樣的:

if(ext == 'jpg' || ext == 'jpeg') 
{ 
    $image_name = 'image.jpg'; 
} 
if(ext == 'doc' || ext == 'docx') 
{ 
    $image_name = 'doc.jpg';  
} 

並作出其他未知圖標

+0

有很多擴展來做這樣的事情。這就是爲什麼我寫第三個解決方案是不好的解決方案:/ – Koshi

0

既然你已經擴展數據庫中的表,下一個合乎邏輯的步驟是加載所有常見的文件將數據擴展插入到相應圖標的引用中。

然後使用in_array測試的延伸和加載正確的圖標。

你可以得到圖標集,在許多不同風格的文件類型。

1

您必須對未知類型的文件使用默認圖標。

您可能會顯示在表例如文件

HTML

<tr> 
<td class="fm fm_file"> 
<a target="_blank" href="./download.php?f=something">yourfile.jpg</a> 
</td> 
</tr> 

,做這個(較大庫的片段)我的代碼片段

PHP

if ($handle = opendir($directory)) { 
      while (false !== ($entry = readdir($handle))) { 
       if ($entry != "." && $entry != "..") { 
        if (!is_dir($directory . DIRECTORY_SEPARATOR . $entry)) { 
         $md = rand(0, 9) . substr(md5('download' . $entry), 1, 10) . rand(1000, 9999); 
         $dlink = '<a target="_blank" href="./download.php?f=' . $entry . '&c=' . $md . '" >' . $entry . '</a>'; 
         $editlink=''; 
         $a=explode('.', $entry); 

         if(in_array(strtolower(array_pop($a)),array('ini','txt','xml','bin','sql'))) 
         $editlink='<a href="filemanager-edit?dir=' . $subdir.'&f=' . $entry . '&c=' . $md . '" >' . $ledit . '</a>'; 
         $filelist.='<tr>' . '<td class="fm fm_file">' . $dlink . '</td>' . '<td class="edit">'.$editlink.'</td>' . '<td class="delete"><a href="filemanager?action=delete&dir=' . $subdir.'&f=' . $entry . '&c=' . $md . '" >' . $ldelete . '</a></td>' . '</tr>'; 
        } else 
         $filelist.='<tr>' . '<td class="fm ft_folder"><a href="filemanager?action=view&dir=' . $subdir . $entry . '&c=' . md5($entry) . '" >' . $entry . '</a></td>' . '<td class="edit"></td>' . '<td class="edit"><a href="filemanager?action=view&dir=' . $subdir . $entry . '&c=' . md5($entry) . '" >' . $lchoose . '</a></td>' . '</tr>'; 
       } 
      } 
      closedir($handle); 
     } 

分配圖標需要用js

的JavaScript

$('.fm_file').each(function(){ 
     var name=$(this).find('a').html().split('.').pop(); 
    $(this).addClass('ft_'+name); 
    }); 

sktóty做IKONW¯¯CSS

CSS

.fm_file{ 
    background-image:url(../../images/filemanager/page_white.png); 
} 

.ft_folder{ 
    background-image:url(../../images/filemanager/folder.png); 
} 

.ft_pdf{ 
    background-image:url(../../images/filemanager/page_white_acrobat.png); 
} 

.ft_cs{ 
    background-image:url(../../images/filemanager/page_white_csharp.png); 
} 

.ft_xls{ 
    background-image:url(../../images/filemanager/page_white_excel.png); 
} 

.ft_php{ 
    background-image:url(../../images/filemanager/page_white_php.png); 
} 
.ft_dll{ 
    background-image:url(../../images/filemanager/page_white_dll.png); 
} 
.ft_exe,.ft_msi{ 
    background-image:url(../../images/filemanager/page_white_exe.png); 
} 
.ft_db,.ft_sql{ 
    background-image:url(../../images/filemanager/page_white_db.png); 
} 
.ft_png, 
.ft_jpg, 
.ft_bmp, 
.ft_gif{ 
    background-image:url(../../images/filemanager/page_white_picture.png); 
} 

.ft_txt, 
.ft_js, 
.ft_ini, 
.ft_bat, 
.ft_css{ 
    background-image:url(../../images/filemanager/page_white_text.png); 
} 

.ft_htm, 
.ft_xml, 
.ft_html{ 
    background-image:url(../../images/filemanager/page_white_code.png); 
} 

.ft_rar, 
.ft_zip{ 
    background-image:url(../../images/filemanager/page_white_compressed.png); 
} 

結果:

enter image description here

如果有人使用未知類型,則使用該類的圖像fm_file。 你總是可以組成一個圖標集合