php单文件实现文件批量预览——图片,音频,视频

ops/2024/9/25 8:30:17/

有一天,无意中发现了一个在线文件预览地址。即那种暴露目录的地址。该目录下清一色的图片。觉得一个个点击进去查看太麻烦了,因此特意写了这个文件预览代码。单php文件,放到站点下运行即可。

1.实用场景

比如一个在线站点文件目录如下:一个个点击查看太慢了。所以就想一次性展示出来。

 

 代码运行实际效果:

tips:咳咳...这里的图片来源于我之前python爬取的图片,仅学习交流。

2.源码解析

废话不多说,先上代码:show.php

php"><!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>记录查询</title>
</head>
<body><style>body {font-family: Arial, sans-serif;margin: 0;padding: 0;background-color: #f9f9f9;}form {margin: 20px;padding: 10px;background-color: #fff;border-radius: 5px;box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);}label {display: block;margin-bottom: 5px;}input[type="text"],input[type="password"],input[type="submit"] {width: 98%;padding: 8px;margin-bottom: 10px;border: 1px solid #ccc;border-radius: 3px;}input[type="submit"] {background-color: #007bff;color: #fff;cursor: pointer;}#imageContainer,#audioContainer {margin: 20px;display: flex;flex-wrap: wrap;justify-content: center;}img {margin: 5px;}audio {margin: 5px;}</style>
<form method="post"><label for="date">选择查看的日期 (年-月-日):</label><input type="text" id="date" name="date" required value="<?php echo htmlspecialchars(empty($_POST['date']) ? '' : $_POST['date']); ?>"><br><label for="password">访问密码:</label><input type="password" id="password" name="password" required  value="<?php echo htmlspecialchars(empty($_POST['password']) ? '' : $_POST['password']); ?>" ><br><input type="submit" value="查阅">
</form><div id="imageContainer"></div>
<div id="audioContainer"></div>
<div id="videoContainer"></div><?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {$date = $_POST["date"];$password = $_POST["password"];// Check if password is correct$correctPassword = "admin"; // Change this to your actual passwordif ($password === $correctPassword) {$url = "http://localhost/img/";$ch = curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$output = curl_exec($ch);curl_close($ch);$doc = new DOMDocument();@$doc->loadHTML($output);$links = $doc->getElementsByTagName('a');$imageLinks = [];$audioLinks = [];$videoLinks = [];foreach ($links as $link) {$href = $link->getAttribute('href');if (substr($href, -4) === '.jpg') {$imageLinks[] = $url . '/' . $href;} elseif (substr($href, -4) === '.mp3') {$audioLinks[] = $url . '/' . $href;}elseif (substr($href, -4) === '.mp4') {$videoLinks[] = $url . '/' . $href;}}echo '<script>';echo 'const imageLinks = ' . json_encode($imageLinks) . ';';echo 'const audioLinks = ' . json_encode($audioLinks) . ';';echo 'const videoLinks = ' . json_encode($videoLinks) . ';';echo 'const videoContainer = document.getElementById("videoContainer");';echo 'videoLinks.forEach(video => {';echo '    const videoElement = document.createElement("video");';echo '    videoElement.controls = true;';echo '    const source = document.createElement("source");';echo '    source.src = video;';echo '    source.type = "video/mp4";';echo '    videoElement.appendChild(source);';echo '    videoContainer.appendChild(videoElement);';echo '});';echo 'const imageContainer = document.getElementById("imageContainer");';echo 'imageLinks.forEach(image => {';echo '    const img = document.createElement("img");';echo '    img.src = image;';echo '    img.style.width = "200px";';echo '    imageContainer.appendChild(img);';echo '});';echo 'const audioContainer = document.getElementById("audioContainer");';echo 'audioLinks.forEach(audio => {';echo '    const audioElement = document.createElement("audio");';echo '    audioElement.controls = true;';echo '    const source = document.createElement("source");';echo '    source.src = audio;';echo '    source.type = "audio/mp3";';echo '    audioElement.appendChild(source);';echo '    audioContainer.appendChild(audioElement);';echo '});';echo '</script>';} else {echo "<p>密码错误,无权访问</p>";}
}
?>
</body>
</html>

从效果图能看到这里特意传递了两个参数,一个参数是date为日期参数,方便做二级目录拼接,当然,如果文件都在一个文件夹下的话,这个参数就不用管了。第二个参数是为了保证私密性做的密码验证。该代码主要功能是将文件中的图片,视频,音频进行批量可视化展示。

3.强强联合

既然知道代码功能是干什么的了,那么我们就可以进行下一个实操环节了。什么?你说你本地根本没有那么多图片或视频资源,食之无味?那你肯定不是我的粉丝,没有关注我之前的博客。该代码功能配合下面两个实用效果更佳。

python通过url爬取视频资源到本地-CSDN博客 python通过url爬取动漫图片_iw233.cn/api/random.php-CSDN博客

希望这个三合一,能给你带来不一样的体验。将复杂的东西简单化,简单的东西工具化。

 


http://www.ppmy.cn/ops/8432.html

相关文章

【原创】springboot+mysql疫苗预约管理系统设计与实现

个人主页&#xff1a;程序猿小小杨 个人简介&#xff1a;从事开发多年&#xff0c;Java、Php、Python、前端开发均有涉猎 博客内容&#xff1a;Java项目实战、项目演示、技术分享 文末有作者名片&#xff0c;希望和大家一起共同进步&#xff0c;你只管努力&#xff0c;剩下的交…

【学习】人工智能在软件测试中的作用有哪些

随着科技的飞速发展&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到各个领域&#xff0c;并发挥着不可或缺的作用。其中&#xff0c;在软件测试方面&#xff0c;AI的应用也愈发普遍。本文将探讨人工智能在软件测试领域的关键作用以及其带来的积极影响。 一、提升测…

开源项目实现简单实用的股票回测

1 引言 之前&#xff0c;尝试做股票工具一直想做的大而全&#xff0c;试图抓取长期的各个维度数据&#xff0c;然后统计或者训练模型。想把每个细节做到完美&#xff0c;结果却陷入了细节之中&#xff0c;最后烂尾了。 最近&#xff0c;听到大家分享了一些关于深度学习、时序…

每日一题:地下城游戏

恶魔们抓住了公主并将她关在了地下城 dungeon 的 右下角 。地下城是由 m x n 个房间组成的二维网格。我们英勇的骑士最初被安置在 左上角 的房间里&#xff0c;他必须穿过地下城并通过对抗恶魔来拯救公主。 骑士的初始健康点数为一个正整数。如果他的健康点数在某一时刻降至 0…

Module外贸主题开心版下载-v5.7.0版本WordPress企业模板

主题下载地址&#xff1a;Module外贸主题开心版下载-v5.7.0版本 Module主题介绍&#xff1a;采用全新模块化开发&#xff0c;首页模块可视化拖拽自由组合&#xff0c;可自定义搭建出不同行业适用的企业网站。同时主题全面支持WPML多语言切换&#xff0c;可轻松搭建外贸网站。W…

Docker简介与为什么要用Docker?

Docker 介绍 以及在Win Mac 以及Linux中安装Docker 一、Docker介绍&#xff1a; Docker 是一个跨平台的开源的应用容器引擎&#xff0c;诞生于2013年初&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。 刚开始学Docker你可以把它理解成我们以前学过的虚拟机&#xff0c…

ChatGPT助力学术研究:高效写作法

ChatGPT无限次数:点击直达 ChatGPT助力学术研究&#xff1a;高效写作法 在当今科技高速发展的时代&#xff0c;人工智能技术已经逐渐渗透到各行各业&#xff0c;对于学术研究者而言&#xff0c;如何利用人工智能工具提升写作效率成为一个重要课题。在这篇文章中&#xff0c;我…

中国的微观调查数据总结

前言 本篇博文的主要目的是为了方便自己在微观实证的时候&#xff0c;查看相关的数据库&#xff0c;故此只做简单介绍和相关获取连接。 如果您想阅读更详细的内容&#xff0c;请移步如下链接 【传送门】 中国健康与养老追踪调查&#xff08;CHARLS&#xff09; 该调查项目旨…