我正在寻找从客户端收集文件的方法。这些客户拥有我们的软件,我们目前正在使用FTP从它们收集文件。这些文件从客户端的数据库中收集,加密并通过FTP上传到我们的FTP服务器。这个过程充满了挫折和障碍。该软件经常被常见的防火墙阻止,并且经常遇到VPN和NAT的困难(通常切换到Passive而不是Active)。
我的问题是,人们有什么其他想法以可靠的方式从客户端以编程方式获取文件。他们提交的大多数文件都是< 1 MB大小。但是,其中一个的大小最大为25 MB。
我考虑过HTTP POST,但是,我担心一个25 MB的文件经常会在帖子上失败(网络服务器会在文件完全上传之前超时)。
思想?
AndrewG
编辑:我们可以使用任何常见的网络技术。我们正在使用共享主机,这可能会使中央配置更改变得困难。我从常见的使用角度熟悉PHP ...但不是从设置的角度来看(编写了很多代码,但没有进入任何过于繁重的任务)。 Ruby on Rails也是可能的......但我会从头开始。理想情况下......我正在寻找一种“网络”方式,因为我希望最终准备好从已安装的代码转换。
答案 0 :(得分:0)
研究scp和rsync。
答案 1 :(得分:0)
你可能意味着HTTP PUT
。这应该像魅力一样。如果你有一个像样的Web服务器。但据我所知,它不可重启。
FTP是正确的选择(通过防火墙的被动模式)。如果您经常遇到VPN连接故障(酒店网络太糟糕了:-))麻烦,请使用支持可重新启动传输的FTP服务器。
必须支持的FTP命令是REST
。
来自http://www.nsftools.com/tips/RawFTP.htm:
Syntax: REST position
设置文件传输应该开始的点;用于恢复中断的转移。对于非结构化文件,这只是一个十进制数。此命令必须紧接在数据传输命令之前(仅RETR
或STOR
);即它必须在任何PORT
或PASV
命令之后。
答案 2 :(得分:0)
一种选择是在浏览器中运行某些内容,这会将上传内容分成块,这样可能会使其更可靠。执行此操作的控件也会在上传过程中向用户提供一些反馈,这是通过简单的HTTP POST无法获得的。
快速Google发现了这个free Java Applet就是这么做的。还有很多其他免费和付费的选项可以做同样的事情