【问题标题】:Download file using FTP and PHP使用 FTP 和 PHP 下载文件
【发布时间】:2010-10-20 18:51:48
【问题描述】:

我想为大文件(最大 1gb)创建一个上传和下载网站。我认为使用 FTP(使用 PHP)下载文件会更好,因为该协议特别用于这些类型的传输。

客户会收到一封电子邮件,其中包含用于下载文件的下载链接(如 yousendit.com)。当他们单击链接时,会出现一个下载框。我的问题是我不知道如何使用 ftp 和 php 显示下载框。我已经读过无法立即通过 PHP 使用 FTP 下载文件。这个对吗? 我是否必须在服务器上创建一个临时文件才能让客户端下载文件?如果是,这也是处理大文件的好方法吗?

你有什么建议让客户可以下载这些巨大的文件?

感谢您的回复!

【问题讨论】:

  • 您是否愿意听听您手动将大文件上传到服务器然后用户单击链接进行下载的想法。这不是 FTP - 而是强制下载。
  • 是的,用户可以上传文件,其他用户可以使用唯一链接下载该文件。使用强制下载时文件大小的限制是多少?下载大文件是否足够稳定?

标签: php ftp


【解决方案1】:

您可以根据 session_id 生成唯一地址(在运行时创建此文件夹并将大文件移动到那里)并将用户重定向到此链接 例如,您有文件 huge.tgz

1. Send you client link http://***/user/john/file/huge.tgz
2. Ask user for auth in this page if they lost session
3. get session id
4. create on your server folder with name equals session id and move huge.tgz here
5. redirect user to unique ftp link ftp://***/17oe5kf8iYmpt66bjs89hcuo83/huge.tgz

您应该禁止列出 ftp 服务器上的文件和目录

【讨论】:

  • 嗯,将文件移动到唯一位置需要多长时间?以及如何将用户重定向到 ftp 位置? By header('位置:ftp://.....'); ?并且用户可以多次下载文件。
  • 如果文件在同一服务器和分区上 - 不到一秒。是的,使用 php 标头函数或 javascript location.href
  • 如果您不想移动文件。你可以复制它。这需要几分钟。如果文件准备好(唯一目录中的文件大小等于原始文件的大小),则通过 ajax 请求服务器而不是通过 javascript 重定向
  • 我唯一要做的就是在文件下载或未下载时删除文件。嗯,当用户打开链接时,文件必须准备好,所以我担心复制文件不是解决方案。
【解决方案2】:

你不能给他们发一个 FTP 链接吗?为什么需要 PHP?

ftp://ftp12.freebsd.org/pub/FreeBSD/ls-lR.gz

【讨论】:

  • 文件需要被保护,所以客户端不能从其他人那里下载文件。通过直接的 ftp 链接,还可以在服务器上下载其他文件。
【解决方案3】:

您可能希望使用 PHP 来处理文件传输以外的所有事情。完成所需的所有检查后,您可以将浏览器重定向到将协议指定为 ftp 的文件。虽然您的网站中无法显示进度条,但浏览器/ftp 应用程序可能会显示一个。

【讨论】:

  • 但是在您的情况下,当用户知道文件名时,他们可以在服务器上下载其他文件,对吧?用php连接ftp服务器是不是更好?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 2012-03-04
  • 1970-01-01
  • 2010-10-29
  • 2014-05-25
相关资源
最近更新 更多