【问题标题】:Upload local file from webbrowser directly to FTP server, bypass the web server从网页浏览器直接上传本地文件到FTP服务器,绕过网页服务器
【发布时间】:2015-11-04 15:28:57
【问题描述】:

我想将用户上传的文件(从网站<form>)上传到我的 FTP 服务器,我想绕过服务器并希望该文件直接发送到 FTP 服务器。是否可以使用 PHP 或 JavaScript?

在当前情况下,当我使用 HTML 表单和 PHP 将文件上传到 Apache 服务器时,文件存储在 /tmp/ 目录中,然后我可以将其传输到 FTP 位置。但这需要双倍的上传时间,因为文件先上传到 Apache 服务器,然后再上传到 FTP 服务器。

云服务器以这种方式运行,可以通过Apache服务器,文件可以直接发布到云服务器)

我想要这个,以便我们可以克服 HTTP 部分,并希望将大文件上传到 FTP 服务器,而不会受到任何 HTTP 上传限制。

【问题讨论】:

  • 我想这与设置代理或直接发布到与某些 PHP 配置不同的服务器有关。
  • 是否可以使用html表单将数据直接发布到其他服务器上?还是我需要使用任何其他工具

标签: javascript php upload ftp


【解决方案1】:

HTML form 标签不支持 FTP。


您也不能使用 PHP,因为它无法访问本地(从 web 浏览器开始)文件。


所以 JavaScript 是唯一可能的解决方案。

XMLHttpRequest class理论上支持FTP:

尽管名称如此,XMLHttpRequest 可用于检索任何类型的数据,而不仅仅是 XML,并且它支持 HTTP 以外的协议(包括 fileftp)。

但实际上可能不会。
accepted answer to What is the syntax to do a cross-domain XMLHTTPREQUEST to an FTP server?

所以实际上,似乎没有任何现成的解决方案。


如果可能,请在 FTP 服务器主机上运行 Web 服务器并使用 Web 服务器 (HTTP) 发送文件。


另一种选择是坚持通过您的网络服务器进行传输,但采用流式传输模式。将文件发布到 Web 服务器。让处理脚本不断读取传入的数据,并不断上传到FTP服务器。

您不会节省带宽,但会节省时间(因为两个传输几乎是并行进行的)。

使用带有标准输入句柄的ftp_fput 应该可以(没有尝试)。

【讨论】:

  • 添加了在“流媒体模式”下通过网络浏览器上传的建议。
  • 让我试试你建议的解决方案,我不介意带宽,但时间更重要,而且请求不应该干扰其他 Apache 请求也是目标之一。你有一些使用流的代码示例吗?
  • 不,我没有任何代码。这只是对可能方法的建议。
【解决方案2】:

如果在 Web 应用程序中不使用 HTTP 协议,很难将数据(BIGfile)FTP 到备份服务器。

比方说,S1-(客户端浏览器)、S2-(代码容器服务器)、S3-(文件备份服务器),我们想使用 FTP 从 s1 上传 2gb 文件。

用例图 这可以通过“JavaApplet”来完成。我们可以在 web 应用程序中嵌入上传器小程序。此小程序将在浏览器沙箱内运行。 使用小程序浏览 ftp 的链接示例代码

如果您必须在浏览器上启用 java。sample code

侧载的 ftp 框图

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 2020-05-02
    • 1970-01-01
    相关资源
    最近更新 更多