从站点目录的URL下载文件

时间:2018-11-30 06:34:37

标签: php linux

两个压缩文件和两个图像位于https://example.com/directory中。 (由于index.php文件在此目录中可用,因此我们不知道这些文件的文件名。)

是否有可能使用PHP或Linux命令查找以上四个文件的名称?

7 个答案:

答案 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 wgetwget --help 或访问 gnu.org WGET

答案 6 :(得分:-4)

您可以使用PHP <?php $files = scandir('./'); print_r($files); 方法。 试试这个:

pointStart:Date.UTC(2016, 3, 1),
pointInterval: 3600 * 1000

这应该打印当前目录中的所有文件。更多信息here