javascript - 根据文件扩展名显示文件图标

标签 javascript php jquery file icons

我正在制作一张上传文件的表格:文件、名称、扩展名(在 php 中连接到 ms sql server)。

我想根据扩展名为每个文件添加一个图标。我认为有 3 个选项可以实现这一点:

  1. 最好 - 以某种方式加载用户默认图标并以某种方式将它们与我的文件连接
  2. 很好 - 从一些网页图标列表以某种方式加载并以某种方式将它们与我的文件连接
  3. 不好 - 将一些图标放入我的文件夹并从该文件加载它

我知道如何执行第三个选项,但我不能只搜索 10 个图标,因为总会有一个扩展名不在我的文件夹中(例如 jpeg 不同于 jpg)。

您能告诉我如何做比第 3 种更好的解决方案吗?它可以是 PHP 或 JS/jQuery,没关系。

最佳答案

您必须通过对未知类型的文件使用默认图标来执行此操作。

例如,您可以在表格中显示文件

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);
   });

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 的图像。 你总是可以组成一个图标集

关于javascript - 根据文件扩展名显示文件图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38698827/

相关文章:

javascript - 如何根据自定义属性分别为具有相同类的所有元素设置背景颜色

php - 将内容从网站加载到 MATLAB,包括内部框架 (iframe)

javascript - 为什么 getElementById() 无法识别表 id

javascript - Jquery 错误地按 id 对 <li> 进行排序

javascript - iOS safari 上带有模板字符串文字的语法错误

php - 斜线附加到我的所有帖子中

javascript - AngularJS 在表格内验证没有表单的输入

php - 我正在创建一个生成 sql 查询的类。我做对了吗?

php - 如何使用 PHP 构建具有动态突出显示的网站菜单?

javascript - 单击以将 div 移动到鼠标坐标