Php 在递归迭代器中指定文件类型
我正在尝试创建一个表单,允许用户选择复选框,当他们提交时,它将在web目录中搜索他们从jpg、gif、html等中选中的特定文件类型。我完成了表单,它将类型的变量传递到一个数组,我有表单的其余部分,用于压缩文件并将其流式传输以供下载。我只是被困在如何指定文件类型上。这就是我开始时所做的,以确保它能够实际提取文件名并将其放入变量中,并且能够正常工作:Php 在递归迭代器中指定文件类型,php,Php,我正在尝试创建一个表单,允许用户选择复选框,当他们提交时,它将在web目录中搜索他们从jpg、gif、html等中选中的特定文件类型。我完成了表单,它将类型的变量传递到一个数组,我有表单的其余部分,用于压缩文件并将其流式传输以供下载。我只是被困在如何指定文件类型上。这就是我开始时所做的,以确保它能够实际提取文件名并将其放入变量中,并且能够正常工作: $rootpath = '.'; $files = $_POST['file_types']; $fileinfos = new Recursive
$rootpath = '.';
$files = $_POST['file_types'];
$fileinfos = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($rootpath)
);
foreach($fileinfos as $pathname => $fileinfo) {
if (!$fileinfo->isFile()) continue;{
$files[] .= substr($pathname, 2);
}
}
我应该使用什么来提取仅在以下列表中指定的文件类型
$_POST['file_types']
编辑:
对于那些可能有所帮助的人来说,这是最终有效的解决方案:
$rootpath = "../";
foreach ($types as $k => $v)
{
$types_array[] .= $v;
}
//Run all function then run it through checker and pull out the files we want
$directory = new RecursiveDirectoryIterator($rootpath,RecursiveDirectoryIterator::SKIP_DOTS);
$iterator = new RecursiveIteratorIterator($directory,RecursiveIteratorIterator::LEAVES_ONLY);
$extensions = $types_array;
foreach ($iterator as $fileinfo) {
if (in_array($fileinfo->getExtension(), $extensions)) {
$files[] = substr($fileinfo->getPathname(), 2); /* Fill the array removing the "./" to make an echo of the file names easier to read for the end user */
}
}
问题还不清楚$fileinfo->getExtension?附言:你的foreach身体上有一些奇怪的花括号。花括号是我在foreach身体上有更多花括号时留下的,它们可以走了,但我的问题很简单。如何将其转换为递归迭代器,该迭代器可以指定要提取的文件类型,而不仅仅是执行所有文件。$fileinfo->getExtension+FilterIterator?$fileinfo->getExtension成功了,感谢您为我指明了明确的方向!