一个简单的网站文件浏览页面

用PHP编写的一个非常简单的文件浏览页面,可以很方便的查看和下载网站的所有文件。并提供有 API 接口给其它页面或程序。

刚开始只是为了更方便的从我的资源下载站中下载文件,就写了一个简单的文件浏览器;觉得纯白背景在晚上太瞎眼了,就添加了暗色模式;为了更方便的查看文件内容,就添加了文件查看器;后面认为需要一个 API 接口给其它页面,就做了一个简单的API接口;后面发现有目录遍历漏洞的问题,就添加了安全检查。

代码文件:下载

示例

网页示例的截图

使用方法:

文本文件查看器使用方法:“files.php?view=<文件路径>”

示例:“files.php?view=.%2Ffile.txt”


API 使用方法:
  1. API 目录列表:

    • 通过 ?api&dir=<目录路径> 请求 API,返回指定目录的文件和子目录信息,一个请求只能查看一个目录的文件列表。
    • 如果请求的目录路径不存在或无效,会返回错误信息。
  2. API 检查/获取文件:

    • 通过 ?api&file=<文件路径> 请求 API,检查文件是否存在并返回相关信息,一次请求只能获取一个文件或目录的信息。
    • 如果添加 encode=<编码格式> 参数会在 JSON 响应里包含文件的对应编码,目前只有 Base64 和 HEX,不能同时包含多个编码 ,用一个 switch 语句来选择,可以很容易的扩展文件编码形式。
  3. API 响应格式:

    • 所有API响应以JSON格式返回,包括成功和错误消息。
  4. API 示例:

api&dir响应示例files.php?api&dir=./
    {
        "status": "success", // 响应成功(如果失败此值返回“error”)。
        "items": [
            {
                "type": "file", // 目标类型是“文件”,如果是“dir”则是目录。
                "name": "file.txt", // 文件或目录名称。
                "path": "./file.txt", // 文件或目录路径。
                "realPath": "/home/vol15_7/infinityfree.com/if0_35171181/htdocs/file.txt", // 文件或目录实际路径。
                "size": 11, // 文件大小(字节数,如果是目录无此项)。
                "mtime": "2024-08-04 13:50:50", // 文件的最后修改时间。
            },
            {...} // 其它的文件或目录以此类推。
        ]
    }
api&dir错误响应:
{
"status": "error",
"message": "Invalid directory" // 错误信息
}


api&item响应内容示例:files.php?api&item=./file.txt&encode=base64
{
"status": "success", // 响应成功(如果失败此值返回“error”)
"message": "File exists", // 返回信息
"file": {
"name": "test.txt", // 文件名
"size": 1234, // 文件大小
"permissions": "0644", // 文件权限,使用八进制表示。
"mtime": "2024-08-04 13:50:50", // 文件的最后修改时间。
"ctime": "2024-08-04 13:50:50", // 文件的创建时间(在某些系统上,这可能表示inode变更时间)。
"ownerId": 123, // 文件所有者的用户名。
"ownerName": "N/A", // 文件所有者的用户名,如果 posix_getpwuid 不可用,则返回 'N/A'。
"groupId": 123, // 文件所属组的ID。
"groupName": "N/A" // 文件所属组的组名,如果 posix_getgrgid 函数不可用,则返回 'N/A'。
}
}

api&item错误响应:
{
"status": "error",
"message": "File not found" // 错误信息
}

已发布

分类

来自

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注