【问题标题】:Where to store uploaded files in PHP & MySQL?在 PHP 和 MySQL 中将上传的文件存储在哪里?
【发布时间】:2010-12-05 02:04:40
【问题描述】:

我正在解决在我的网络应用程序中存储文件的问题。

我已经完成了一些将文件存储在文件系统中的应用程序(通过 PHP 简单上传文件),但我不确定如何正确解决安全问题(我在共享虚拟主机上有 webapp)。是否有任何“手册”或书籍详细针对这些问题?

最近,我做了一个webapp,文件存储在MySQL数据库中,看起来很容易使用,我不需要解决文件的权限。缺点是有额外的系统开销。

你觉得哪个更好? (我有小文件 ~ 100kB)

谢谢!

【问题讨论】:

标签: php mysql file-upload


【解决方案1】:

每种解决方案都有其优点和缺点。

在数据库中存储文件非常适合小文件。请记住将文件本身以及有关这些文件的任何元数据保存在两个不同的表中。这将防止您的查询因二进制数据而变慢。另请注意,超时会导致数据库表非常大。

文件系统存储很棒,但请记住,与将文件存储在数据库中相比,您必须更加注意文件权限/安全性。

我希望这会引导您朝着正确的方向前进。如果您有任何问题,请发表评论。

【讨论】:

  • 为什么要在两个表中保存文件内容和元数据?我认为该表由列组成,而 blob 列只是数据实际所在的 mysql 的“指针” - 所以我不确定为什么它应该更慢。但是谢谢你的提示!我在想:包含文件的表的大小可能会拆分为多个较小的表(例如 table_1、table_2、..),从而防止一个大表崩溃。
  • 所有这些优点和缺点都深入介绍了@stackoverflow.com/questions/3748/…
  • @MartyIX:如果你使用一个愚蠢的 ORM 来处理SELECT * …,它会更慢。
  • 要将数据保留在两个表中的原因是,如果您执行“从 image_table 中选择大小”,则 db 仍将遍历所有表列,包括包含二进制数据的字段为了编译你的结果集。通过将数据分开,您可以防止数据库查询不必要的数据,从而提高性能。
猜你喜欢
  • 2010-11-15
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多