2017-02-24 93 views
0

我正面临着如何在PHP网站上实现文件上传和下载的困境。PHP上传和下载文件

我有以下标准:

  1. 性能 - 不给性能问题的网站
  2. 文件大小 - 2GB左右及以上。
  3. 授权 - 我希望能够更改谁可以访问PHP中的文件。允许多个用户访问单个文件。
  4. 用户友好 - 无需使用其他工具。

因此,这里有我目前在看的方法和我如何评估他们根据我的标准:

数据库BLOB

  1. 写文件数据到输出流需要时间并阻止其他请求(这是否正确?)
  2. 我在某处读取BLOB的大小限制。
  3. 好的 - 我可以轻松控制谁可以在这里下载文件。
  4. 确定 - 没有其他工具,只有网站。

FTP

  1. 确定 - 因为它是设计用来存储文件。
  2. OK - 文件系统是限制。
  3. 我需要为网站的用户名和密码以外的每个用户创建另一个凭证。我假设我必须将文件从一个位置移动到另一个位置以更新授权,但是如果多个用户可以访问一个文件?共享目录?它看起来很混乱。
  4. 需要另一个工具/程序来访问他们的文件,需要记住另一个用户名和密码。

我的问题:根据我的假设

  1. ,你thimk我理解正确的方法是什么?
  2. 如果我的假设是错误的,有没有一种方法可以在符合我的标准的同时执行此功能?

PS请原谅我的英文。

回答

3

为什么不只是使用文件系统来存储文件,并将路径存储到给定文件(如果需要,还需要+权限)以及数据库中。

无法从公众访问上传文件夹,并且包装脚本会将内容提供给用户。

  1. 性能不应该是一个问题,因为您只需将上传的文件移动/复制到专用数据目录。
  2. 文件大小不是问题(只要,你有足够的磁盘空间)
  3. 这个脚本处理权限和文件提供给用户
  4. 这是友好的,因为你设计的UI
+0

谢谢!我正想补充说,作为我的选择。将文件写入输出流的性能如何? – dpp

+0

将文件写入输出不应该是问题。下载文件的时间比编写文件要高得多。如果你不使用输出缓冲,用户也可以下载文件,即使它没有完全写入 – Philipp

+0

它会阻止下一个请求吗? – dpp

1

对我来说,BLOB的使用并不是最好的。我想过BLOB在我自己的网站上传图片,但上传文件的最好方法是直接将它们放在您的本地服务器上。