You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP图片画廊扩展PDF支持:显示PDF图标替代无效图片

实现PHP画廊支持PDF文件显示的解决方案

以下是针对需求修改后的完整代码,同时优化了文件扩展名的检测逻辑(避免原strpos可能出现的误判):

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="./style.css">
    <title>Document</title>
</head>

<body>
    <?php

    $menu = glob('./Galeria_A/*');
    $filter = ['-', '~', '_'];
    $current_folder = isset($_GET['folder']) ? $_GET['folder'] : '';

    echo '<ul class="header-ul">';
    foreach ($menu as $item) {
        $strr = str_replace("./Galeria_A/", "", $item);
        $print = str_replace($filter, " ", $strr);
        $active = ($strr === $current_folder) ? 'active' : '';
        echo '<li><a class="' . $active . '" href="?folder=' . $strr . '">' . ucfirst($print) . '</a></li>';
    }
    echo '</ul>';
    ?>
    <main>
        <ul>
             <?php
             $current_folder = isset($_GET['folder']) ? $_GET['folder'] : '';
             // 调试用输出,需要时可取消注释
             // echo $current_folder;
             $files = glob('./Galeria_A/' . $current_folder . '/*');
             // echo "<pre>";
             // print_r($files);
             // echo "</pre>";

             // 定义支持的图片格式和PDF图标路径
             $image_extensions = ['jpg', 'jpeg', 'png', 'gif'];
             $pdf_icon = 'pdf-icon.png'; // 确保此文件在当前脚本可访问路径下

             foreach ($files as $file) {
                 $file_ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
                 if (in_array($file_ext, $image_extensions)) {
                     // 图片文件:直接渲染原图,点击打开大图
                     echo '<li class="image"><a href="' . $file . '" target="_blank"><img src="' . $file . '"></a></li>';
                 } elseif ($file_ext === 'pdf') {
                     // PDF文件:显示指定图标,点击打开PDF文档
                     echo '<li class="image"><a href="' . $file . '" target="_blank"><img src="' . $pdf_icon . '" alt="PDF文件"></a></li>';
                 }
                 // 其他格式可按需添加处理逻辑
             }
             ?>
        </ul>
        <?php
        $gif = [];
        $jpeg = [];
        $jpg = [];
        $png = [];
        $pdf = [];

        foreach ($files as $file) {
            $file_ext = strtolower(pathinfo($file, PATHINFO_EXTENSION));
            switch ($file_ext) {
                case 'gif':
                    $gif[] = $file;
                    break;
                case 'jpeg':
                    $jpeg[] = $file;
                    break;
                case 'jpg':
                    $jpg[] = $file;
                    break;
                case 'png':
                    $png[] = $file;
                    break;
                case 'pdf':
                    $pdf[] = $file;
                    break;
            }
        }

        echo "gif files:" . "<br><br>";
        foreach ($gif as $file) {
            echo $file . "<br>";
        }
        echo "jpeg files:" . "<br><br>";
        foreach ($jpeg as $file) {
            echo $file . "<br>";
        }
        echo "jpg files:" . "<br><br>";
        foreach ($jpg as $file) {
            echo $file . "<br>";
        }
        echo "png files:" . "<br><br>";
        foreach ($png as $file) {
            echo $file . "<br>";
        }
        echo "pdf files:" . "<br><br>";
        foreach ($pdf as $file) {
            echo $file . "<br>";
        }
        ?>
    </main>
</body>

</html>

关键修改说明:

  1. 扩展名检测优化:使用pathinfo($file, PATHINFO_EXTENSION)精准获取文件扩展名,转小写后判断,避免因文件名大小写(如.PDF)或含扩展名字符串的文件名导致的误判。
  2. PDF处理逻辑:
    • 定义PDF图标路径$pdf_icon,需确保该图标文件存在于脚本可访问的路径(如当前目录)
    • 检测到PDF文件时,渲染指定图标作为缩略图,点击链接直接打开PDF文档(添加target="_blank"让PDF在新窗口打开,提升浏览体验)
  3. 文件分类扩展:在文件统计部分新增PDF数组,同步显示目录中的PDF文件列表
  4. 调试代码处理:将原调试用输出代码注释,需要调试时可取消注释

内容的提问来源于stack exchange,提问作者Yourfav frog

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.01 15:08:12