2014-01-16 30 views
5

什麼是最好的symfony文件系統抽象層? 我需要在symfony項目中設置一個文件系統,類似於Dropbox。 我不知道文件/媒體將存儲在哪裏或如何,所以這就是爲什麼我需要這個抽象層,設置它,並不打擾更新文件的位置。Symfony2什麼是最好的文件系統抽象層?

什麼,我需要做的:

-adding folders/files 
-moveing folder/files to another lcoation 
-delating folder/files 
-download folder/files 
-upload folder/files 
-editing folder/files 
-editing name of folder/files 

你知道它有什麼好的包? symfony 2的任何好的解決方案? 請告訴我爲什麼這個解決方案對我有好處?

回答

0

https://github.com/KnpLabs/KnpGaufretteBundle

當然,最深入實施,它包含的Dropbox。

+0

但我如何上傳一些像電影或圖像的媒體文件?不只適用於txt文件? '$ content ='你好,我是新內容'; $ filesystem-> write('myFile',$ content);' – Vardius

+0

我沒有親自使用它。我只知道它抽象了文件系統管理。我想它不關心上傳哪些文件類型。 – Flosculus

+0

我發現很好的教程如何上傳圖像做亞馬遜與gaufrette:http://braincrafted.com/symfony2-gaufrette-s3/我認爲它可以幫助 – Vardius

24

當前可用的選項似乎是:

1)Gaufrette

爲了轉移你需要把它首先在內存中的東西。當你必須處理大文件時,這是一個問題。 Gaufrette具有文件系統抽象層,但無法在文件系統之間移動對象。一些基本功能也缺失,例如 - 刪除一個目錄。

感覺更像是具有不同適配器的鍵值存儲模擬器。

2)Filicious

在紙面上看起來很有希望,但實際上它不是。這些文檔都是錯誤的。它提到了不存在的命名空間和沒有找到的類。目前,大部分Filicious周圍的東西似乎都沒有實現。到目前爲止,唯一的工作適配器是本地適配器。您可以跟蹤他們的進度website

3)Flysystem

看起來比上述提到的更好。有流支持。他們也有這個MountManager,你可以使用它來在不同的文件系統之間傳輸文件。

總之,我的選擇是Flysystem。如果它符合您的要求,您應該自己檢查一下。

+0

請您引用關於在內存中第一次處理Gaufrette中的文件的觀點嗎?在我正在進行的一個項目中,這是我的一個擔憂,但我無法在任何地方找到任何關於它的事情。 –

+0

它在代碼庫中。您可以看到他們在本地適配器上使用了file_get_contents(),它將獲取文件二進制內容並將其放到一個變量中。如果這個文件大概是5GB左右,那麼這個變量會佔用5GB的內存。 其他適配器也一樣。例如,FTP一個使用stream_get_contents()。 雖然在內存中獲取完整文件對於小文件是有效的,但對於大文件卻是一種阻礙。應該使用流代替。 –

+0

這個網頁和評論在Google排名上都要高得多。就個人而言,我已經在一些項目中使用了Gaufrette和Flysystem,對於您在網上找到的所有信息,Gaufrette似乎是正確的選擇,但實際上,這是一個痛苦的屁股。 Flysystem與它的mountmanager使文件處理方式應該是 – Simon

相關問題