我仍然认为 Adobe Air 应用程序是解决您问题的可靠方法。提供简单的安装/更新,支持 ssl,允许您完全控制用户体验,110% 跨平台等...但是,如果您讨厌 Adobe 或编写 UI 代码,您是否研究过 WebDav / dav4rack gem?
https://github.com/bryanrite/dav4rack-example-devise-subdirectories
该 GitHub 示例在 rails 应用程序中使用 devise 进行身份验证,并使用相同的凭据让用户访问私有存储桶,他们可以在其中通过任何 WebDav 客户端上传文件。您的 Web 应用程序可以提供包含 URL 中的用户名的链接,以便更方便地访问。
OS X 的 Finder 通过 Finder 的“连接到服务器”对话框(自 10.1.1 起)原生支持 WebDav。
如果您的用户使用 Linux,我相信他们可以理解 WebDav。
从扫描http://en.wikipedia.org/wiki/WebDAV看,它看起来像是 Win98 中 Windows 支持的 WebDav。然而,与所有其他网络标准一样,微软决定,嗯,有创意。听起来如果用户是最新的 KB892211、KB907306、Office、Internet Explorer、OLE-DB 和/或“用于 Web 文件夹的 Microsoft 更新”,他们应该能够通过 SSL 使用各种身份验证方案轻松访问 WebDav 文件夹。我确信您的所有 Windows 用户都在使用带有所有最新更新和完整 Office 套件的正版 Windows。
由于您的 rails 应用程序是WebDav 服务器,因此您将能够抛出错误(无法将该文件写入服务器)、对上传的文件/目录进行后处理,并进行所需的任何簿记(您拥有用户帐户,以及与他们上传的内容)。Dav4rack 很不错。您可以使用实际的文件系统作为后端或数据库,或者将上传的文件反弹到 S3,或者您可以在 ruby 中执行的任何操作。
我认为此解决方案无法解决您的“递归查找与文件模式匹配的所有文件”组件以及 Air 应用程序可以解决的问题。如果没有实际经验,我想模式匹配会在上传完成后发生(可能带宽效率低下)。