2015-06-14 45 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