2011-06-08 55 views
0

我使用expressionsengine 2.x和努力創造,其中上傳的文件將被存儲在一個登錄的用戶ID命名的文件夾在前端用戶的文件上傳表單。我們可以使用saef或者破壞者來做到這一點。如果沒有其他選項。ExpressionEngine SAEF文件上傳到特定directoy

回答

1

竊賊捆綁了一個字段類型,SafeCracker File,創建文件上傳域。字段類型利用您在控制面板中創建的任何File Upload Directories

默認情況下,所有上傳的文件將被存儲在文件上傳目錄的首選項中指定的目錄。

纔能有撬鎖的文件上傳到登錄的用戶ID命名的子文件夾,你可以開發一個自定義插件,或者利用一個compatible fieldtype that works with SafeCracker - 如果存在的話,以滿足您的需求。

到撬鎖另一種方法是使用Solspace Freeform Module。但是,即使這樣做,您的文件上傳仍將全部保存到相同的文件上載目的地,而不是嵌套在子文件夾中。

+0

謝謝你,但你的回答不幫助我。如果我是附加組件,我不會問這個問題。我們可以修改safecracker文件,告訴它查找在safecracker標記中指定的上傳目錄。 – Pinkie 2011-06-08 23:48:27

+0

當您有一個[Developer API](http://expressionengine.com/user_guide/development/)允許您擴展ExpressionEngine的功能時,您爲什麼要破解SafeCracker的代碼或其捆綁的字段類型?爲了實現你想要的功能,你最好的解決方案是編寫一個插件或字段類型。這裏是[簡單的例子](http://stackoverflow.com/questions/6171828/expressionengine-tags-inside-php/6192200#6192200)讓你開始。 – rjb 2011-06-09 00:16:08

+0

只是有點困惑這將如何工作。你的意思是隻爲文件字段寫一個插件。比方說,我創建一個文件上傳插件,接受文件路徑作爲標籤屬性。 '{exp:fileupload property ='/ path /'}'這將如何與saef進行交互。它是基於提交點擊。 – Pinkie 2011-06-09 03:30:28

1

在這種情況下,因爲竊賊沒有任何擴展鉤子,並且沒有附加組件我知道,讓這個特定的行爲,我會做撬鎖文件的副本,並對其進行更改以添加此功能。否則,你只是從頭開始用自己的「上傳文件」字段類型。

你會想看看ft.safecracker_file.php中的第148行,並添加一小段代碼來檢查一個目錄是否存在登錄用戶的屏幕名稱或你有什麼(see how to get this here ),創建它,如果它不,然後將該目錄名追加到上傳路徑:

$data = $this->EE->filemanager->upload_file($this->settings['safecracker_upload_dir'].'/'.$users_directory_name, $field_name); 

這應該讓你開始我想。

+0

這似乎是明智的解決方案。我會試試看。 – Pinkie 2011-06-13 21:28:31

+0

這不起作用。上傳圖片時,會出現錯誤「您尚未指定任何允許的文件類型。您嘗試上傳的文件類型是不允許的。」 – Pinkie 2011-06-14 01:05:29

+0

您想要上傳什麼樣的文件?你打開了XSS過濾嗎? – 2011-06-14 12:19:45

相關問題