两个压缩文件和两个图像位于https://example.com/directory中。 (由于index.php文件在此目录中可用,因此我们不知道这些文件的文件名。)
是否有可能使用PHP或Linux命令查找以上四个文件的名称?
答案 0 :(得分:7)
您必须记住:如果您的Web服务器不允许扫描目录,那么您将无法获取文件名。但是,如果目录在Web服务器中共享,则可以使用wget
命令获取文件列表。例如:
wget -nv -r -np '*.*' https://example.com/directory/
答案 1 :(得分:0)
<?php
$files=[];
$folder="/directory/directory/directory/";
if (is_dir($folder)){ // check whether exists or not
$allfiles = glob($folder.'/*.*'); // Read all filenames of $folder directory
foreach($allfiles as $imgFile) {
$files[]=$imgFile; // Putting the names of $folder directory to array one by one
}
}
echo "<pre>";
print_r($files); // printing the file name array to list aal names
echo "</pre>";
答案 2 :(得分:0)
我认为您根本不了解HTTP协议。根据HTTP协议,它不知道任何目录/子目录。您无法在HTTP协议中执行此类操作。
您想下载http://example.com/directory一些您不知道其名称的文件。为此,您不能这样使用PHP。您必须依赖外部库(例如wget等)或FTP协议。
答案 3 :(得分:0)
<?php
$dir = 'directory';
$filesArr = scandir($dir);
$files = array();
for($i=2; $i<count($filesArr);++$i){
if($filesArr[$i]=="index.php"){ continue; }
$files[] = $filesArr[$i];
}
$zipname = 'file1.zip';
$zip = new ZipArchive;
$zip->open($zipname, ZipArchive::CREATE);
foreach ($files as $file) {
$zip->addFile($file);
$zip->addFile($dir.'/'.$file, $dir.'/'.$file);
}
header('Content-Type: application/zip');
header('Content-disposition: attachment; filename='.$zipname);
header('Content-Length: ' . filesize($zipname));
readfile($zipname);
$zip->close();
exit;
?>
答案 4 :(得分:0)
尝试这个,我在项目中使用下面的示例,它对我来说很好用,
<?php
$directory='directory';
$handler= opendir("$directory"."/");
$i=0;
while (false !== ($file = readdir($handler))) {
if ($file != '.' && $file !='..'){
echo $file.'<br>';
}
}
?>
答案 5 :(得分:0)
假设您的网络服务器 example.com
上有一个目录,例如:/multimedia/
,并且您想检索其内容,例如 mp3、jpg、png 等 - 但是 不是列表索引 也不是 tmp 索引文件,例如:index.html•C=D;O=D
:
wget -r -R "*.html*" -np -nd -l 1 example.com/multimedia/
哪里:
-r # Recursive
-R "*.html*" # Reject tmp and listing html files
-np # Don't ascend to the parent directory
-nd # Don't create parent directories
-l 1 # Only one level deep (multimedia/ folder only)
要了解更多信息:运行 man wget
或 wget --help
或访问 gnu.org WGET
答案 6 :(得分:-4)
您可以使用PHP <?php
$files = scandir('./');
print_r($files);
方法。
试试这个:
pointStart:Date.UTC(2016, 3, 1),
pointInterval: 3600 * 1000
这应该打印当前目录中的所有文件。更多信息here