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

