7

目标: 允许用户选择一个文件夹,然后递归查找与文件模式匹配的所有文件,并将其传输(POST)到我的网络服务器

本质上只是一个更高级的上传对话框......

由于安全原因,标准网络技术(我们正在使用 plupload)不支持这一点,afaik。

附加要求:易于使用/从 webapp 安装。需要 SSL 和应用程序用户凭据。其他一些数据,如记录 ID(从 Web 应用程序获取或创建)来关联上传文件会很好。

Web 应用程序本身是用 Ruby on Rails 编写的,但如果我需要某种本机 Mac 和 Windows(=我的 80% 的用户)桌面客户端,这并不重要。

我有哪些选择?

这样做的代码和对开源库的引用是一个奖励。

4

3 回答 3

4

我建议创建一个 Adob​​e Air 应用程序。

您可以重用现有的 plupload js 代码,并使用 adobe air api 对其进行扩展。理想情况下,它将是一个主要是静态的应用程序,但会调用服务器来创建策略文档,并在上传时做任何你想做的簿记。在从 JavaScript 访问 AIR API 类中达到顶峰。然后查看filesystem.File类。

Flash 具有 99.3% 的渗透率,用户只需单击“安装我的上传器”,如果需要,就会自动安装 air 框架。Air 也适用于 Android 和 iDevices,因此您的应用可能可供 99.999% 的用户及其妈妈使用。

我花了一分钟才找到它,但这里是面向 HTML 开发人员的 Adob​​e® AIR® API 参考

哦,看看我在他们的例子中发现了什么:

var directory = air.File.documentsDirectory;

try
{
    directory.browseForDirectory("Select Directory");
    directory.addEventListener(air.Event.SELECT, directorySelected);
}
catch (error)
{
    air.trace("Failed:", error.message)
}

function directorySelected(event) 
{
    directory = event.target ;
    var files = directory.getDirectoryListing();
    for(var i = 0; i < files.length; i++)
    {
        air.trace(files[i].name);
    }
}
于 2012-05-04T03:10:05.177 回答
1

我会从以下内容开始构建一个客户端: https ://github.com/ms4720/s3sync ,这样您就可以将它保存在 ruby​​ 家族中。如果你需要一个友好的 gui: http ://shoesrb.com/tutorials/

于 2012-05-01T13:26:47.373 回答
0

我仍然认为 Adob​​e Air 应用程序是解决您问题的可靠方法。提供简单的安装/更新,支持 ssl,允许您完全控制用户体验,110% 跨平台等...但是,如果您讨厌 Adob​​e 或编写 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 应用程序可以解决的问题。如果没有实际经验,我想模式匹配会在上传完成后发生(可能带宽效率低下)。

于 2012-06-14T05:59:41.067 回答