2012-05-01 304 views
6

目标: 允许用户选择一个文件夹,然后递归找到的所有文件,一个文件模式和传输(POST)匹配我的Web服务器从文件夹和子文件夹将文件上传到Web应用程序

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

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

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

Web应用程序本身是用Ruby on Rails编写的,但如果我需要某种本地Mac和Windows(= 80%的用户)桌面客户端,那应该没关系。

我有什么选择?

代码和对开源库的引用是一个好处。

+0

“找到与文件模式匹配的所有递归文件”喜欢,你想从文件夹中上传所有PNG(但可能不是jpg)吗?你究竟在尝试处理什么? – whitehat101

+0

1st:正确。第二:你是什么意思,什么文件类型? * .dcm – oma

回答

4

我会建议创建一个Adobe Air应用程序。

您可以重复使用现有的plupload js代码,并使用adobe air apis来扩展它。理想情况下,它应该是一个大部分为静态的应用程序,但需要通过服务器调用来创建策略文档,并在上传过程中执行任何要做的记录。在Accessing AIR API classes from JavaScript处取峰。然后看看filesystem.File课。

Flash有99.3%的渗透率,用户只需点击“安装我的上传器”,并根据需要自动安装空气框架。 Air也在Android和iDevices上,所以你的应用可能会提供给99.999%的用户和他们的妈妈。

我花了一分钟找到它,但这里是Adobe® AIR® API Reference for HTML Developers

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

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); 
    } 
} 
1

我会建立一个客户端,从这样的事情开始: https://github.com/ms4720/s3sync 这样你就可以保持在红宝石家族。如果你需要友好的gui: http://shoesrb.com/tutorials/

+0

这对常规用户不起作用。不一定要安装Ruby,也不能向公众发布S3凭证。实质上,我只需要更高级的上传对话框 – oma

0

我仍然认为一个Adobe AIR应用程序是一个坚实的解决方案你的问题。提供简单的安装/更新,支持ssl,允许您完全控制用户体验,110%跨平台等。但是,如果您讨厌Adobe或编写UI代码,您是否看过WebDav/dav4rack gem?

https://github.com/bryanrite/dav4rack-example-devise-subdirectories

这GitHub的示例使用用于认证的Rails应用程序设计,并使用相同的凭据,用户访问私有桶,他们可以通过任何WebDAV客户端上传文件。您的网络应用程序可以提供一个包含URL中用户名的链接,以使访问更加方便。

OS X的Finder本身通过Finder的“连接到服务器”对话框(从10.1.1开始)支持WebDav。

如果您的用户使用Linux,我确定他们可以将WebDav绘制出来。

从扫描http://en.wikipedia.org/wiki/WebDAV它看起来像Windows支持Win98中的WebDav。但是,与其他所有网络标准一起,微软决定要创造性地这样做。听起来好像用户是否了解KB892211,KB907306,Office,Internet Explorer,OLE-DB和/或“Web文件夹的Microsoft更新”,他们应该能够轻松地通过各种身份验证方案通过SSL访问WebDav文件夹。我相信所有的Windows用户都在使用带有所有最新更新和完整Office套件的Genuine Windows。

由于您的Rails应用程序 WebDAV服务器,你就可以抛出错误(不能写文件到服务器),后处理上传的文件/目录,做任何你需要的簿记(你拥有用户的帐户以及他们上传的内容)。 Dav4rack很不错。您可以使用实际的文件系统作为后端或数据库,或者将上传的文件反弹到S3,或者几乎所有您可以在Ruby中执行的任何操作。

我不认为这个解决方案解决你的“找到所有文件递归匹配文件模式”组件以及一个空气应用程序可以。如果没有现实世界的经验,我会想象模式匹配会在上传完成后发生(潜在的带宽效率低下)。

+0

你真的很想要这个赏金,杰里米,哈哈。不知道我对WedDav有什么看法,但感谢分享。当Q对我非常重要时,我会添加赏金以尝试尽可能多的角度。您将获得Adobe AIR答案。再次感谢。 – oma

+0

我的公司一直在考虑上传工具。我做了一个轨道应用程序的一部分,直接推送到S3(不是Air应用程序),但事实证明,这有很多怪癖。我们得到了它的工作,但只有银光。 Flash无法获得上传进度,还有一些文件损坏的问题。 HTML5失败,HTML4还没有进展,我认为它需要自定义标题。它已经达到了我几乎感觉S3直接准备投入生产的程度。我一直在考虑重做东西和建立更多的Air应用程序,但是它对我来说是下一个项目! – whitehat101

相关问题