文件上传和配额

时间:2013-02-27 15:48:25

标签: php file-upload upload

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

问题是,每个应用程序都以自己的方式将文件上传到自己的位置,使服务器混乱并丢失对哪个文件所属的跟踪。

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

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

1 个答案:

答案 0 :(得分:1)

你需要的第一件事是开始:)因为这毕竟是编程,试验和错误。您可能会发现自己已经完成了重新开始的任务的一半,但这是在工作描述中。

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

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

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

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

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

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

示例:

test_image.png =&gt;上传/ app_x /t/e/ test_image.png

another_img.png =&gt;上传/ app_x /a/n/ test_image.png


您也可以使用此日期(例如 wordpress ):

test_image.png =&gt;上传/ app_x /2013/02/27/ test_image.png

another_img.png =&gt;上传/ app_x /2013/02/26/ test_image.png


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

这将使查找服务器上的文件更快。在开始之前考虑文件夹结构是件好事,考虑所有可能类型的文件是件好事。

  • 如有必要,请考虑更改文件名。例如,这取决于您是否希望公开显示文件。

我回家后会继续这份清单,但这应该是值得深思的。