当前位置: 首页 > 知识库问答 >
问题:

在PHP目录中查找文件的最佳方法是什么

文建业
2023-03-14

我需要使用php读取目录中的所有文件。所以我需要这样的回报

array(
        'content_type' => 'application/zip', 
        'suggested_name' => 'this_is_example.zip', 
        'protected_path' => 'download/this_is_example.zip'
    ),

我的文件如下所示:

$download_list = array();
    if(is_array($PROTECTED_DOWNLOADS)) {
        foreach ($PROTECTED_DOWNLOADS as $key => $download) {
            // Create a new key
            $new = uniqid('key',TRUE);
            // get download link and file size
            $download_link = "http://" . $_SERVER['HTTP_HOST'] . DOWNLOAD_PATH . "?key=" . $new . "&i=" . $key; 
            $filesize = human_filesize(filesize($download['protected_path']), 2);
            $filename = ($download['suggested_name']);
            // Add to the download list
            $download_list[] = array(
                'download_link' => $download_link,
                'filename' => $filename,
                'filesize' => $filesize
            );

            /*
             *  Create a protected directory to store keys in
             */
            if(!is_dir('history')) {
                mkdir('keys');
                $file = fopen('history/.htaccess','w');
                fwrite($file,"Generator");
                fclose($file);
            }

            /*
             *  Write the key key to the keys list
             */
            $file = fopen('history/keys','a');
            fwrite($file,"{$new}\n");
            fclose($file);
        }
    }

现在一切正常,但是在运行之前我必须自己输入这些文件。如何从目录中发布所有文件?现在我有这样的:

$PROTECTED_DOWNLOADS = array(
    array(
        'content_type' => 'application/png', 
        'suggested_name' => 'example.png', 
        'protected_path' => 'download/example.png'
    ),
    array(
        'content_type' => 'application/txt', 
        'suggested_name' => 'this_is_example.txt', 
        'protected_path' => 'download/this_is_example.txt'
    ),
    array(
        'content_type' => 'application/zip', 
        'suggested_name' => 'this_is_example.zip', 
        'protected_path' => 'download/this_is_example.zip'
    ),
    array(
        'content_type' => 'application/rar', 
        'suggested_name' => 'this_is_example.rar', 
        'protected_path' => 'download/this_is_example.rar'
    ),
    array(
        'content_type' => 'application/docx', 
        'suggested_name' => 'this_is_example.docx', 
        'protected_path' => 'download/this_is_example.docx'
    )
);

我尝试了用lolob()、scandir()和readdir(),但是我没有得到想要的结果。谢谢!

共有1个答案

滕鸿畴
2023-03-14

未经测试,但请尝试这样做。

<?php
$directory = 'download';
$PROTECTED_DOWNLOADS = [];
foreach (glob($directory."/*") as $filename) {
    $PROTECTED_DOWNLOADS[]['content_type'] = mime_content_type($filename);
    $PROTECTED_DOWNLOADS[]['suggested_name'] = $filename;
    $PROTECTED_DOWNLOADS[]['protected_path'] = "$directory/$filename";
}
print '<pre>';
print_r($PROTECTED_DOWNLOADS);
print '</pre>';
?>
 类似资料:
  • 问题内容: 困难在于它应该是跨平台的。Windows 2000,XP,Vista,OSX,Linux和其他Unix变体。我正在寻找可以针对所有平台完成此操作的代码片段,以及一种检测平台的方法。 现在,你应该知道的错误4787931是不能正常工作,所以请不要为我提供教科书的答案,我可以在手册中找到这些我自己。 问题答案: 你引用的错误(错误4787391)已在Java 8中修复。即使你使用的Java

  • 问题内容: 查看URL存在并且响应不是404的最佳方法是什么? 问题答案: 您可以使用 手册中的示例2 : 第一个数组元素将包含HTTP响应状态代码。您必须解析它。 请注意,示例中的函数将发出HTTP HEAD请求,这意味着它将不会获取URL的正文。这比使用GET请求(也将返回正文)更有效。 还要注意,通过设置 默认 上下文,任何使用http流上下文的后续调用现在都将发出HEAD请求。因此,确保完

  • 问题内容: 查找对象是否在数组中的最佳方法是什么? 这是我知道的最好方法: 问题答案: 从ECMAScript 2016开始,您可以使用 如果要支持IE或其他较旧的浏览器: 编辑:这将无法在IE6、7或8上运行。最好的解决方法是自行定义它(如果不存在): Mozilla)版本: { }; } Daniel James的版本: Array.prototype.indexOf = function (

  • 问题内容: 在我的PHP应用程序中,我需要 从许多文件 (主要是日志) 的末尾开始读取多行 。有时我只需要最后一个,有时我需要数十或数百。基本上,我想像Unix 命令一样灵活。 这里有一些关于如何从文件中获取最后一行的问题(但是我需要 N 行),并给出了不同的解决方案。我不确定哪一个最好,哪个表现更好。 问题答案: 方法概述 在互联网上搜索时,我遇到了不同的解决方案。我可以将它们分为三种方法: 天

  • 问题内容: 我正在编写一个Python备份脚本,需要在目录(及其子目录)中找到最旧的文件。我还需要仅将其过滤为* .avi文件。 该脚本将始终在Linux计算机上运行。有什么方法可以在Python中完成,还是运行一些Shell命令会更好? 目前,我正在努力获取特定分区上的可用空间,如果可用空间不足5 GB,我想开始删除最旧的文件,直到满足该条件为止。 问题答案: 嗯 Nadia的答案是接近你什么

  • 问题内容: 我正在尝试将一个自动化脚本输入到最近创建的文件夹中。 我下面有一些代码 我不确定如何从现在开始检查最新的时间戳。有任何想法吗? 谢谢 问题答案: 还有的“创建时间”在大多数OS /文件系统没有实际的跟踪:你得到的是一个文件或目录的时间 修改 (因此,例如创建一个目录中的文件更新该目录的修改时间) -和,如果提供,则表示最新的inode更改时间(因此将通过创建或删除子目录来更新)。 假设