2012-05-01 191 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

相關問題