0

我正在开发一个 web 项目,在不同的应用程序中分开(使用 SSO 让用户同时登录所有应用程序),用户可以在所有应用程序中上传文件。

问题是,每个应用程序都以自己的方式上传文件,将文件上传到自己的位置,从而使服务器变得混乱并无法追踪文件属于哪个文件。

我想为此开发一个组件,以便所有应用程序通过它上传并跟踪每个用户配额、文件等。

因为我可以自己弄清楚如何做到这一点,所以我想知道这样做是否有好的做法。有没有我可以阅读的文章?有没有可用的系统?另外,如果您想知道的话,我正在使用 PHP。

4

1 回答 1

1

您需要做的第一件事就是开始 :) 因为这毕竟是编程,反复试验。您可能会发现自己必须重新开始任务的一半,但这在工作描述中。

但我同意在开始之前制定计划非常有用。我不知道任何涵盖正确做事的良好实践和标准的教程,但我会尝试给你一些提示。

  • 始终检查 MIME 类型、扩展名和文件大小。您还可以阻止 .htaccess 中的某些类型的文件,以防万一您忘记或不够小心

<FilesMatch ".(htaccess|htpasswd|php|js|exe|bat)$"> // extentions to block
Order Allow,Deny
Deny from all
</FilesMatch>  

您还可以考虑使用白名单而不是黑名单。

  • 有一些明确定义的位置,这在很大程度上取决于您需要的文件数量以及为什么需要它们。

如果您有很多文件,您可以以哈希表的形式创建文件夹结构。例如,您可以去除非字母数字字符,并根据文件的第一个字母创建 2 级文件夹。

例子:

test_image.png => 上传/app_x /t/e/test_image.png

another_img.png => 上传/app_x /a/n/test_image.png


您也可以为此使用日期(就像wordpress一样):

test_image.png => 上传/app_x /2013/02/27/test_image.png

another_img.png => 上传/app_x /2013/02/26/test_image.png


如果您有用户上传的文件,您可能需要为每个用户创建一个文件夹(uploads/app_y/user_x/his_file.pdf)。

这将使在服务器上查找文件的速度更快。最好在开始之前记住文件夹结构,并且最好考虑所有可能的文件类型。

  • 如有必要,请考虑更改文件的名称。例如,这取决于您是否希望使文件公开可见。

当我回到家时会继续这个列表,但这应该是一些值得深思的地方。

于 2013-02-27T16:16:47.407 回答