【问题标题】:PHP uploading and downloading filesPHP上传和下载文件
【发布时间】:2017-02-24 15:24:20
【问题描述】:

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

我有这些标准:

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

以下是我目前正在研究的方法以及我如何根据我的标准评估它们:

数据库 BLOB

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

FTP

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

我的问题:

  1. 根据我的假设,您认为我对这些方法的理解正确吗?
  2. 如果我的假设是错误的,有没有办法可以在满足我的标准的同时实现此功能?

PS 请原谅我的英语。

【问题讨论】:

    标签: php mysql ftp


    【解决方案1】:

    为什么不只使用文件系统来存储文件并将给定文件的路径(+权限,如果需要)另外存储在数据库中。

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

    1. 性能应该不是问题,因为您只需将上传的文件移动/复制到专用数据目录即可。
    2. 文件大小不是问题(只要您有足够的磁盘空间)
    3. 包装脚本处理权限并向用户提供文件
    4. 界面友好,就像您设计您的用户界面一样

    【讨论】:

    • 谢谢!我正要添加它作为我的选择。将文件写入输出流的性能如何?
    • 将文件写入输出应该不是问题。下载文件的时间比编写文件要长得多。如果你不使用输出缓冲,用户也可以下载文件,即使它没有完全写入
    • 会阻塞下一个请求吗?
    • 通常你应该有多个工作进程
    • 对不起,工人对我来说有点含糊。我看到了一个 pthread 引用和 stream_set_blocking。那些是你指的还是 PHP 默认处理“工人”?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-17
      • 1970-01-01
      • 2012-06-18
      • 2012-05-25
      • 2016-03-16
      • 1970-01-01
      • 1970-01-01
      • 2021-10-22
      相关资源
      最近更新 更多