在php中使用id搜索文件


Searching files using id in php

我创建了一个网站,用户可以在上面上传不同的文件,稍后可以通过他们的配置文件访问这些文件。随着时间的推移,我意识到这种为用户创建文件夹和子文件夹的方法非常繁琐,因为随着越来越多的用户加入和使用我的网站,它会创建如此多的文件夹和子文件夹。我现在考虑为所有文件创建一个文件夹,但将用户的文件动态重命名为类似USERID-FILENAME的文件。

当我想将文件显示给他们的特定用户时,问题就来了;我想搜索文件夹中的文件,然后获取以特定用户id开头的文件,例如,如果其用户id为200,我想获取第一个连字符前有200的所有文件并显示它们。

我怎样才能做到这一点?这是最好的方法吗?

您可能想要更像数据库或键值存储的东西来完成这项工作,而不是您的文件系统,如果您的网站显著增长,文件系统将无法很好地扩展。

例如,您可以使用类似<userid>-<filename>的东西作为键值存储中的键,将文件的内容设置为值,编码为二进制blob。

最重要的是,您可能需要一个描述符来跟踪用户上传过的所有文件,可能直接由用户ID或类似<userid>-files 的东西键入

然后,当您查找用户时,首先加载他们的<userid>-files描述符,使用该描述符来显示他们访问/控制/拥有的文件列表,然后在他们请求特定文件时查找<userid>-<filename>

再考虑一下,这可能不足以处理用户多次上传同一文件的情况——您可能需要为文件本身分配ID,并将这些ID保留在<userid>-files blob中。这还有一个额外的优势,即存储文件的模式与用户无关,因此您可以开始扩展服务以实现共享功能(也许还有另一大块数据描述共享/访问控制属性)。

可能是这样的:

foreach (glob( ((int)'$userid')'-*') as $file) {
    process($file);
}