2012-11-19 32 views
3

我使用阿賈克斯應用程序在Symfony2的 Web應用程序上傳文件。 當我上傳的文件,我把它們放在一個路徑,如:使用Symfony2進行文件上傳的安全性:在哪裏安全地存儲它們?

"%kernel.root_dir%/../web/bundles/acmehome/images/uploaded" 

我有一個關於這些文件的管理很多麻煩。

web目錄中的所有文件是否可見/可搜索/可瀏覽? 如果是,我應該使用哪條路徑用於存儲目的,以便僅爲註冊用戶顯示它們?

我提出這個問題,因爲here用戶魯克建議不要把文件存儲在Web根

回答

0

是的,在默認配置下,所有的文件都可見/搜索/瀏覽。您可以通過目錄中的.htaccess文件限制訪問。

我認爲這是一個不Web根文件夾移動上傳文件的一個好辦法。

本主題吸引了我很多。

+0

一個應該在哪裏將上傳的文件? – JeanValjean

0

我做了什麼來管理是創建每個數據庫條目上傳

1 - 我上傳文件到如Web /上傳/ [月]文件夾/ [日](我保護上傳文件夾的.htaccess )

2 - (我創建的)上載我創建 名, 描述, 文件路徑, 文件擴展名, 所有者類型(在這裏我上傳文件的實體)一進入期間調用上傳學說實體, 所有者ID(實體ID)

3 - 最後,如果我上傳我的文件上的「博客實體」(供應商\實體\博客),或在評論實體(供應商\實體\評論),我會要求所有的文件屬於。

$em = $this->getDoctrine()->getEntityManager(); 
     $documents = $em->getRepository('VendorBundle:Upload')->findBy(array(
     'ownerType' =>$entityName, 
     'ownerId' =>$id 
    )); 

這種方法非常靈活,允許您創建一個可以在每種實體上運行的上傳模塊。 更多了,因爲上傳的索引,通過搜索引擎的搜索效率要高得多(因爲你可以像描述,名稱添加元數據,...)

+0

那麼,我的問題更多地涉及「存儲文件的位置」而不是「哪個模型用來存儲它們」。關於定義子目錄,我不知道是否有這樣的優勢。閱讀[那Q/A](http://stackoverflow.com/questions/12178171/user-files-organization-in-a-web-server)。 – JeanValjean

+0

與上傳文件的真正問題是展現給它存儲在服務器上的用戶,因爲如果它是一個腳本的事情,他們必須從URL調用它來執行它。 – Chopchop

+0

但我不會把它放在web/bundle中,因爲它通常是我們存儲東西的地方(根據doc)。我寧願選擇web/upload/random() – Chopchop