我创建了一个网站,用户可以上传不同的文件,以后可以通过他们的个人资料访问这些文件。随着时间的推移,我意识到这种为用户创建文件夹和子文件夹的方法非常麻烦,因为它创建了许多文件夹和子文件夹,因为更多的用户加入并使用我的网站。我现在想为所有文件创建一个文件夹,但是动态地将用户的文件重命名为USERID-FILENAME
。
当我想向特定用户显示文件时,问题出现了;我想搜索文件夹中的文件,然后获取以特定用户ID开头的文件,例如,如果其用户为id 200,我想在第一个连字符之前获取所有200个文件并显示它们。
如何实现这一目标并且它是最好的使用方法?
答案 0 :(得分:0)
或许这样的事情:
foreach (glob( ((int)'$userid')'-*') as $file) {
process($file);
}
答案 1 :(得分:0)
你可能想要更像这个工作的数据库或键值存储,而不是你的文件系统,如果你的网站显着增长,它将无法很好地扩展。
例如,您可以使用<userid>-<filename>
之类的内容作为键值存储中的键,将文件内容设置为值,编码为二进制blob。
除此之外,您可能需要一个描述符来跟踪用户上传过的所有文件,可能是由用户标识或<userid>-files
然后,当您查找用户时,首先加载他们的<userid>-files
描述符,使用它来显示他们访问/控制/拥有的文件列表,然后在他们请求时查找<userid>-<filename>
具体文件。
再考虑一下,这可能不足以处理用户多次上传同一文件的情况 - 您可能希望为文件本身分配ID,并将这些ID保留在{{1}中} blob。这具有额外的优势,即用于存储文件的模式是用户无关的,因此您可以开始扩展您的服务以实现共享功能(可能还有另一大块数据描述共享/访问控制属性)。