发布于2026-06-30 阅读(0)
扫一扫,手机访问
本文详解如何在 PHP 中安全、精准地扫描指定目录(如 archives/),筛选符合命名规范的文件,并将结果以 JSON 格式写入磁盘(如 archives/events.txt),同时规避常见错误(如未定义变量、路径问题、冗余文件写入等)。
在 Web 开发中,动态获取服务器端的文件列表并持久化存储是个高频需求,比如生成事件索引、缓存文件清单。但很多人一上来就直接调 scandir() 往里写,结果不是路径解析出问题,就是文件覆盖了,又或者格式不兼容导致前端 AJAX 调用一头雾水——坑都不少。下面这套方案偏稳健型,能复用,避坑策略也一并打包了。
先强调一点:别硬编码路径,也别用那种不安全的筛选方式。有些原始代码里 scandir('archives') 连目录存不存在都不管,更别说后面用 print_r($files1, true) 生成可读的调试字符串——这玩意儿对 Ja vaScript 来说可不是标准 JSON,前端根本没法直接解析。改进后的函数,把路径验证、后缀过滤、格式标准化和防自写入都安排上了:
很多新手在 Ja vaScript 里犯的毛病是 xhr.send(data) 直接报错,因为 data 变量压根没声明。这种情况其实分两种处理:如果不需要传参,就调 xhr.send() 空括号;如果必须 POST 数据,那就得显式构造一下:
function LISTevents() { const xhr = new XMLHttpRequest(); xhr.open("POST", "json-events.php"); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onload = function() { if (xhr.status === 200) { console.log("File list sa ved successfully:", xhr.response); } else { console.error("Server error:", xhr.statusText); } }; xhr.onerror = () => console.error("Network error"); xhr.send(); // ✅ 无参数时不要传 data return false;}执行脚本后,archives/events.txt 会生成类似 ["20240501-log.txt","20240502-data.txt"] 的标准 JSON 数组。前端拿过去直接消费,完全没障碍。这样一来,“文件没创建”和“格式不可用”这两个烦人的痛点,就算彻底解决了。
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
售后无忧
立即购买>office旗舰店
正版软件
正版软件
正版软件
正版软件
正版软件
1
2
3
7
8