2009-08-06 97 views
13

我正在构建一个大型网站,允许成员上传内容(图片,视频),大小不超过20MB(可能稍小于15MB,我们尚未确定最终上传限制但它将在10-25MB之间)。HTTP vs FTP上传

我的问题是,我应该与HTTP或FTP上传在这种情况下。请记住,80-90%的上传文件的尺寸较小,比如cca 1-3MB,但有时会有一些成员也想上传大文件(10MB +)。

对于这样的大文件,HTTP上传足够可靠还是应该使用FTP?上传文件时,HTTP和FTP之间有明显的速度差异吗?

我在问,因为我使用Zend Framework,它已经有文件上传的HTTP适配器,万一我选择FTP,我将不得不为它编写我自己的适配器。

谢谢!

回答

15

HTTP绝对减轻了客户的负担。很多地方都有代理或防火墙阻止所有FTP流量(进入或退出)。

+3

有一些技术原因使用HTTP上的FTP,但我觉得用户体验胜过他们。 – 2009-08-06 19:10:21

3

我不wanto是讽刺,但文件传输协议必须在文件传输:)

+13

不是。它只是更老。 – vy32 2009-08-06 14:03:02

0

资源可用性/使用率超过可靠性和速度的问题,更可靠。每次上传都会在上传期间消耗Web服务器上的资源(线程/内存/等)。如果内容上传流量对于大文件很重要,那么最好使用FTP来简单地释放HTTP服务器以更好地响应页面请求。

+0

它仍然必须在同一台机器上运行,所以不会有任何自动优势,除非特定的FTP实现比该特定HTTP服务器中的HTTP上载更高效/性能。或者,如果你使用某种共享存储,你可以有一个单独的专用上传HTTP服务器,所以没有理由选择其中一个。 – 2009-08-06 13:41:36

+0

为什么你认为这些必须在同一台机器上运行? – ScottTx 2009-08-06 13:57:01

+0

推测HTTP服务器需要访问上传的文件。 – 2009-08-06 14:10:48

7

是HTTP上传足够可靠 这么大的文件

FTP的

一个主要优点是恢复中止上传的能力。大多数FTP服务器和客户端都支持这一点,尽管它并不总是被激活。而使用HTTP,理论上可以使用特殊的头文件,但普通的客户端(即浏览器)将不支持它。

另一个优势是批量上传:在FTP中非常简单,而不是在HTTP中。

但为什么不简单地提供这两个选项?对于那些落后于代理的用户,或者不会/不能使用FTP客户端的HTTP,以及那些必须通过不可靠的连接上传大量或大量上传的用户的FTP。

+1

FTP上传不会用FPT客户端完成。这将通过PHP代码中的网页浏览器完成。唯一的麻烦是我将不得不为FTP上传编写自己的适配器类(因为Zend Framework目前仅支持HTTP),这需要我一些时间,并且我有一个截止日期。 – 2009-08-06 14:12:31

+1

我不明白服务器部分的实现与客户端的使用有什么关系。网页浏览器不一定支持FTP上传(Firefox不支持,尽管我认为有一个插件)。但是如果你不能使用现有的FTP服务器,那么自己实现它绝对不是一个好主意。 – 2009-08-06 14:50:08

12

HTTP的一大优点是它覆盖了防火墙,并且它非常易于加密 - 只需在端口443上使用HTTPS而不是在端口80上使用HTTP。两者都经过代理和防火墙。现在使用POST通过HTTP/HTTPS上传20MB文件非常容易。

HTTP的问题在于它无法重新启动上传。如果您发送文件的80%,然后出现故障,则需要在开始时重新启动。这就是为什么供应商越来越多地使用基于Flash,基于Java或基于JavaScript的上传者和下载者的原因。这些系统可以查看已发送多少文件,发送MAC以确保它已正确到达,并重新发送缺少的部分。

MAC比你想象的更重要。 TCP校验和只有32位,所以有一个四十亿分之一的错误没有被检测到。今天的互联网可能会发生很多事情。

+0

确实HTTP POST不能重启,但Flash和Javascript无法使用像Java这样的文件进行HTTP PUT。 – 2011-08-03 23:47:09

+0

是的,我的回答是,供应商越来越多地使用基于Flash和Java的上传器,因为它们可以重新启动。 – vy32 2011-08-04 20:21:23

+0

端口433更典型的是HTTPS而不是437? – 2013-10-21 22:00:49

-5

FTP将消耗比HTTP带宽少,因为后者将需要编码(BASE64)的二进制内容成纯文本从而增加总传输大小。 (减三分之一)。

然而,带宽消耗可能不一定是主要关注的问题,比其他因素,如可用性和安全性,在HTTP为准。

+5

是什么? base64的上传?不,它不。使用multipart/form-data它会变成二进制。 – 2010-11-18 22:07:21

0

我绝对选择HTTP方式作为其他人在这里。这是因为你对大部分文件的描述是从一到三兆字节。

的问题是对“休息”,所以:

你有没有考虑允许用户通过电子邮件发送大文件的守护程序脚本,获取电子邮件和上传电子邮件与相关联的帐户发送者? 或者有类似Facebook的方法,Flash uploader的解决方案。