从用户收集文件

时间:2009-10-27 22:38:15

标签: large-file-upload

我正在寻找从客户端收集文件的方法。这些客户拥有我们的软件,我们目前正在使用FTP从它们收集文件。这些文件从客户端的数据库中收集,加密并通过FTP上传到我们的FTP服务器。这个过程充满了挫折和障碍。该软件经常被常见的防火墙阻止,并且经常遇到VPN和NAT的困难(通常切换到Passive而不是Active)。

我的问题是,人们有什么其他想法以可靠的方式从客户端以编程方式获取文件。他们提交的大多数文件都是< 1 MB大小。但是,其中一个的大小最大为25 MB。

我考虑过HTTP POST,但是,我担心一个25 MB的文件经常会在帖子上失败(网络服务器会在文件完全上传之前超时)。

思想?

AndrewG

编辑:我们可以使用任何常见的网络技术。我们正在使用共享主机,这可能会使中央配置更改变得困难。我从常见的使用角度熟悉PHP ...但不是从设置的角度来看(编写了很多代码,但没有进入任何过于繁重的任务)。 Ruby on Rails也是可能的......但我会从头开始。理想情况下......我正在寻找一种“网络”方式,因为我希望最终准备好从已安装的代码转换。

3 个答案:

答案 0 :(得分:0)

研究scp和rsync。

答案 1 :(得分:0)

你可能意味着HTTP PUT。这应该像魅力一样。如果你有一个像样的Web服务器。但据我所知,它不可重启。

FTP是正确的选择(通过防火墙的被动模式)。如果您经常遇到VPN连接故障(酒店网络太糟糕了:-))麻烦,请使用支持可重新启动传输的FTP服务器。

必须支持的FTP命令是REST

来自http://www.nsftools.com/tips/RawFTP.htm

Syntax: REST position

设置文件传输应该开始的点;用于恢复中断的转移。对于非结构化文件,这只是一个十进制数。此命令必须紧接在数据传输命令之前(仅RETRSTOR);即它必须在任何PORTPASV命令之后。

答案 2 :(得分:0)

一种选择是在浏览器中运行某些内容,这会将上传内容分成块,这样可能会使其更可靠。执行此操作的控件也会在上传过程中向用户提供一些反馈,这是通过简单的HTTP POST无法获得的。

快速Google发现了这个free Java Applet就是这么做的。还有很多其他免费和付费的选项可以做同样的事情