如何在PHP中设置变量获取文件夹文件名并将PHP变量值传递到JS
实现步骤
1. PHP端读取目标目录文件列表
首先确保C:\xampp\htdocs\dump\uploads目录对PHP进程有可读权限,读取并过滤文件列表的代码如下:
<?php // 定义目标目录,用正斜杠避免Windows反斜杠转义问题 $target_dir = "C:/xampp/htdocs/dump/uploads"; // 校验目录是否存在 if (!is_dir($target_dir)) { die("目标目录不存在"); } // 读取目录条目,过滤.、..两个特殊目录,只保留真实文件/子目录,重置数组索引 $file_list = array_values(array_filter(scandir($target_dir), function($item) use ($target_dir) { // 若只需保留文件、排除子目录,可解开下一行注释 // if (!is_file($target_dir . '/' . $item)) return false; return !in_array($item, ['.', '..']); })); ?>
如果需要区分文件和子目录,可在过滤逻辑中额外加入is_file()或is_dir()判断。
2. PHP变量传递给JavaScript
分两种常用场景实现:
场景1:JS代码和PHP在同一页面
直接将PHP数组转成JSON格式输出给JS即可,JSON格式可被JS直接识别:
<script> // JSON_UNESCAPED_UNICODE参数避免中文文件名被转义 const fileList = <?php echo json_encode($file_list, JSON_UNESCAPED_UNICODE); ?>; // 测试打印文件列表 console.log(fileList); </script>
场景2:JS为独立文件、需要异步获取
先单独写PHP接口文件get_file_list.php:
<?php header('Content-Type: application/json; charset=utf-8'); $target_dir = "C:/xampp/htdocs/dump/uploads"; if (!is_dir($target_dir)) { echo json_encode([]); exit; } $file_list = array_values(array_filter(scandir($target_dir), function($item) use ($target_dir) { return !in_array($item, ['.', '..']); })); echo json_encode($file_list, JSON_UNESCAPED_UNICODE); ?>
JS端通过fetch请求获取数据:
fetch('/dump/get_file_list.php') .then(response => response.json()) .then(fileList => { console.log(fileList); // 此处写后续业务逻辑 });
注意事项
- 生产环境需要增加权限校验,避免目录遍历漏洞、泄露敏感文件信息
- 文件名存在特殊字符时,
json_encode会自动做转义处理,无需额外手动过滤
内容的提问来源于stack exchange,提问作者Peter Playz
相关产品推荐
相关产品推荐

