2015-06-14 63 views
-4

我無法將文件保存到用戶上傳文件時登錄的正確用戶名。使用laravel5存儲用戶文件

我有這樣的語法:

$file->move('../UserFolders/{[username}]/photos/', $name); 

所以會發生什麼是laravel創建一個文件夾,名爲:

{[用戶名]]而不是指向登錄用戶名

回答

1

因爲你的語法你應該這樣做是錯誤的

$file->move('../UserFolders/'.$username.'/photos/', $name); 

因爲你在做t他在你的控制器中因此只能用$來訪問變量,並且你必須將它與字符串連接起來

+0

謝謝您的回答,不過,laravel正在創建一個文件夾,名爲:{{名}}任何想法 – Mark

+0

編輯我的答案,你確定{{$ username}}是一個有效的變量,如果你試圖訪問當前登錄用戶的名字,然後使用{{Auth :: user() - > name}},那麼用戶名將存儲在該變量中。 –

+0

,它創建了一個名稱爲{{$ username}}的文件夾,我嘗試了{{Auth :: user() - > name}}和{{Auth :: user() - > username}},但仍然沒有任何東西 – Mark

2

你的語法可能不正確。

$file->move('../UserFolders/{[username}]/photos/', $name); 
             ^^ 
             `-- here 

你打開一個大括號,打開方括號,然後關閉大括號。嘗試嵌套他們爲{[username]}(我假設{[]}是一些Laravel魔法,通過move()解碼):

$file->move('../UserFolders/{[username]}/photos/', $name); 

,或者$username是在局部範圍內確實可用,只需

$file->move("../UserFolders/{$username}/photos/", $name); 

(如果一個文件夾'{[username]}'被創建,那麼就沒有這樣的Laravel魔法了,你應該檢查文檔)。

請記住,的代碼將不會被評估如果你把它放在單引號。你需要把它們放在雙引號

$file->move("../UserFolders/{Auth::user()->name}/photos/", $name); 

$folderName = Auth::user()->name; 
$file->move("../UserFolders/{$folderName}/photos/", $name); 
+0

感謝您的回答,最後一個解決方案效果很好,但我仍然對該視圖有問題,當我點擊該圖片的列表時,鏈接不會反映會話的實際用戶名。 – Mark

+1

這將是另一個問題的問題。如果不查看代碼或者知道*鏈接*沒有反映出* *,我想冒險說您需要將圖片的所有者存儲在某處並顯示該值 - * not *'Auth :: user() - > name是當前*會話所有者 - 在鏈接中。但我只是在猜測,而且我可能是錯的。在一個不完全不相關的說明中,我能否提出一些問題技巧提示,讓你感興趣? – LSerni

+0

好吧..你可以看看這個鏈接中的代碼:http://pastebin.com/U1t6CJj7 – Mark